random.randint mit anderem Mittelwert konstruieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tm.toni
User
Beiträge: 2
Registriert: Dienstag 9. Juli 2013, 23:14

Moin Leute,
bitte helft mir mit meinem Problem:
Ich möchte eine nxn-Matrix mit "zufälligen" Werten +/-1 erzeugen und den Mittelwert vorgeben.
Bis jetzt habe ich:

Code: Alles auswählen

from numpy import * 
from numpy import random as rn
mittelwert = 0.8
n = 50
matr = (rn.randint(0, 2, [n,n])*2-1+mittelwert)
mittelwert = mean(matr)
matr = sign(matr)
mittelwert2 = mean(matr)
print matr
print mittelwert, mittelwert2
Ich hoffe es kann mir jemand helfen.
Viele Grüße
Toni
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@tm.toni:Du rechnest einfach die Anzahl der -1 und 1 aus, damit Du auf Deinen Mittelwert kommst und verteilst diese Zahlen dann in der Matrix

Code: Alles auswählen

import numpy
mittelwert = 0.8
n = 50
anzahl_einsen = int(0.5*(mittelwert+1)*n*n)
matrix = numpy.array([1]*anzahl_einsen+[-1]*(n*n-anzahl_einsen))
numpy.random.shuffle(matrix)
matrix = matrix.reshape(n,n)
tm.toni
User
Beiträge: 2
Registriert: Dienstag 9. Juli 2013, 23:14

@Sirius3: Vielen Dank für die gute und schnelle Antwort. Es funktioniert wie gewünscht!
Antworten