Probenahme ohne Ersatz bei ungleichen GewichtenPython

Python-Programme
Guest
 Probenahme ohne Ersatz bei ungleichen Gewichten

Post by Guest »

Ich versuche, einen Algorithmus zu finden, der 12 Elemente aus einer Liste von 25 entsprechend der Wahrscheinlichkeit jedes einzelnen von ihnen auswählt. Diese Elemente können nicht wiederholt werden.
Ich habe versucht, die Funktion ohne Ersatz zu verwenden, aber ich schaffe es nicht, die Gewichte beizubehalten, wenn ich 1000 Iterationen durchführe um zu überprüfen, ob es richtig gemacht wurde. Das ist mir nur gelungen, wenn ich die Funktion mit „replace = True“ verwende.
Da mir diese Funktion doppelte Elemente zurückgibt, bereinige ich die Liste und entferne die Duplikate. Dadurch ist die Wahrscheinlichkeit, dass ich jede Zahl erhalte, nicht die, die ich zu Beginn definiert hatte. Mir ist bewusst, dass der Fehler vorliegt und dass ich die Funktion mit „replace = False“ verwenden sollte, aber ich kann sie nicht dazu bringen, mir das Ergebnis zu liefern.

Code: Select all

import numpy as np
from collections import Counter

nameList = ['AAAAAA', 'B', 'C', 'D','E','F','G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P','Q','R','S','T','U','V','W','X','ZZZZZZZZZZZZZZZZ']
probability_nameList = [0.10, 0.01, 0.02, 0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04]

sampleNames =[]
sampleNamesControl =[]
cleaned_result = []
test_list = []

for i in range(1000):
sampleNames += np.random.choice(nameList, 100,replace=True, p=probability_nameList)
for item in sampleNames:
if not item in cleaned_result:
cleaned_result += [item]
sampleNames =[]
test_list += cleaned_result[0:12]
cleaned_result = []

print(Counter(test_list))

Antwort:

Code: Select all

Counter({'AAAAAA': 832, 'F': 522, 'X': 513, 'ZZZZZZZZZZZZZZZZ': 506, 'I': 505, 'L': 504, 'N': 501, 'S': 499, 'T': 498, 'U': 496, 'R': 492, 'O': 491, 'J': 489, 'P': 488, 'E': 487, 'V': 485, 'K': 482, 'Q': 479, 'H': 473, 'G': 471, 'M': 468, 'W': 461, 'D': 404, 'C': 297, 'B': 157})
Wie Sie sehen, musste AAAAA zehnmal größer sein als B, und das passiert nicht.
P(AAAAA)= 10xP(B)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post