2011-10-27 22 views
8

Esto está en Delphi (7 para ser exactos). ¿Cómo puedo generar números aleatorios dentro de un rango específico? Similar a random.randint(1,6) en Python. Intento simular dados rodantes. La otra opción es excluir alguna manera 0.Números aleatorios en un rango

Actualmente tengo:

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

Es trivial 'de alguna manera' excluir cero. Solo haz 'Aleatorio (6) + 1'. –

Respuesta

22

Puede utilizar

RandomRange(1, 7) 

que devolverá un entero aleatorio del conjunto {1, 2, 3, 4, 5, 6}.

(uses Math)

[Por cierto, es trivial 'de alguna manera' excluir a cero. Sólo hacer Random(6) + 1]

+0

Gracias, pero tiene que ser RandomRange (1,7) para que el 6 esté incluido. – Aaron

+0

@ Aaron: ¡Sí, lo cambié hace varios minutos! –

2

Además, es posible generar un valor de un rango flotador [a b, b), exluding:.

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

La primera línea genera un valor de [0; 1) intervalo; el segundo da un valor de [a, b).

Si desea obtener N valores aleatorios dentro del intervalo [a; b] (por ejemplo, 5 valores al azar de intervalo [1; 2]: {1, 1,25, 1,5, 1,75, 2}) utilizan la siguiente:

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

Debería ser 'RandomRange (0, N)' –

1

a un valor específico puede usar

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

ese valor aleatorizará entre 1 a 6