Ich habe diese Funktion ausgeführt:
https://github.com/thewheelmaker/GDscript_Weighted_Random
Now! in deinem Fall kannst du es so benutzen:
on_normal_case([5,20,45,20,10],0)
Es gibt nur eine Zahl zwischen 0 und 4, aber Sie können sie in ein Array einfügen, in dem Sie die Gegenstände erhalten haben.
item_array[on_normal_case([5,20,45,20,10],0)]
Oder in Funktion:
item_function(on_normal_case([5,20,45,20,10],0))
Hier ist der Code. Ich habe es auf GDscript gemacht, das können Sie, aber es kann eine andere Sprache ändern, auch nach logischen Fehlern suchen:
func on_normal_case(arrayy,transformm):
var random_num=0
var sum=0
var summatut=0
#func sumarrays_inarray(array):
for i in range(arrayy.size()):
sum=sum+arrayy[i]
#func no_fixu_random_num(here_range,start_from):
random_num=randi()%sum+1
#Randomies be pressed down
#first start from zero
if 0<=random_num and random_num<=arrayy[0]:
#print(random_num)
#print(array[0])
return 0+ transformm
summatut=summatut+arrayy[0]
for i in range(arrayy.size()-1):
#they must pluss together
#if array[i]<=random_num and random_num<array[i+1]:
if summatut<random_num and random_num<=summatut+arrayy[i+1]:
#return i+1+transform
#print(random_num)
#print(summatut)
return i+1+ transformm
summatut=summatut+arrayy[i+1]
pass
Es funktioniert so: on_normal_case ([50,50], 0) Dies ergibt 0 oder 1, es hat beide die gleiche Wahrscheinlichkeit.
on_normal_case ([50,50], 1) Dies ergibt 1 oder 2, beide haben die gleiche Wahrscheinlichkeit.
on_normal_case ([20,80], 1) Dies ergibt 1 oder 2, es gibt eine größere Änderung, um zwei zu erhalten.
on_normal_case ([20,80,20,20,30], 1) Dies ergibt einen Zufallszahlenbereich von 1-5 und größere Zahlen sind wahrscheinlicher als kleinere Zahlen.
on_normal_case ([20,80,0,0,20,20,30,0,0,0,33], 45) Dieser Wurf würfelt zwischen den Zahlen 45,46,49,50,51,56, die Sie sehen, wenn Sie dort sind Null ist, kommt es nie vor.
Die Funktion gibt also nur eine Zufallszahl zurück, die von der Länge des Arrays und der Transformationsnummer abhängt, und die Angaben im Array sind Wahrscheinlichkeitsgewichte, mit denen eine Zahl auftreten kann, bei der sich diese Zahl auf dem Array befindet.