2011-10-27 6 views
8

Ceci est en Delphi (7 pour être exact). Comment puis-je générer des nombres aléatoires dans une plage spécifique? Semblable à random.randint(1,6) en Python. J'essaie de simuler des dés roulants. L'autre option est d'exclure une certaine façon 0.Nombre aléatoire dans une plage

Actuellement, j'ai:

Randomize; 
Roll := Random(7); 
Label3.Caption := IntToStr(Roll); 
+5

Il est trivial de « en quelque sorte » exclure zéro. Faites juste 'Random (6) + 1'. –

Répondre

22

Vous pouvez utiliser

RandomRange(1, 7) 

qui retourne un entier aléatoire dans l'ensemble {1, 2, 3, 4, 5, 6}.

(uses Math)

[Soit dit en passant, il est trivial de 'en quelque sorte' exclure zéro. Il suffit de faire Random(6) + 1]

+0

Merci, mais il doit être RandomRange (1,7) de sorte que le 6 est inclus. – Aaron

+0

@Aaron: Oui, j'ai changé ça il y a quelques minutes! –

2

En outre, il est possible de générer une valeur dans une plage de flottement [a, b), compte non tenu de b:.

r := random; 
x := (b-a)*r + a; 

La première ligne génère une valeur de [0; 1) intervalle; le second donne une valeur de [a, b).

Si vous souhaitez obtenir N valeurs aléatoires dans l'intervalle [a; b] (par exemple, 5 des valeurs aléatoires à partir de l'intervalle [1, 2]: {1, 1,25, 1,5, 1,75, 2}) utilisent le suivant:

r := RandomRange(0, N-1); 
x := a + r*(b-a)/(N-1); 
+0

Il devrait être 'RandomRange (0, N)' –

1

à une valeur spécifique, vous pouvez utiliser

randomize; 
ran:=random(6)+1; 

cette valeur randomiser entre 1 à 6

Questions connexes