2011-02-11 35 views
6

Quiero obtener un número aleatorio en pascal entre un rango. Básicamente algo como esto:¿Cómo obtener un número aleatorio en pascal?

r = random(100,200); 

El código anterior tendría entonces un número aleatorio entre 100 y 200.

¿Alguna idea?

el construido en función de Pascal sólo le permite obtener un número de entre 0-su rango, mientras que necesito para especificar el número mínimo de volver

+4

¡Guau! Alguien todavía usa Pascal ?! No lo he usado desde principios de los años ochenta. – wallyk

+0

@wallyk por favor vea si puede responder mi otra pregunta :). http://stackoverflow.com/questions/4965977/pascal-syntax-error –

Respuesta

9

Acaba de obtener un número aleatorio con el rango correcto (es decir, de 100 a 200 sería gama 100) a continuación, añadir el valor inicial a ella

Así: random(100) + 100 por su ejemplo

+0

Si quisiera entre 100-300, ¿haría 'random (200) + 100'? –

+0

Sí absolutamente correcto, tenga en cuenta que no estoy muy familiarizado con pascal, así que es posible que tenga que limpiar la sintaxis – Ralph

+1

Tenga en cuenta que en la mayoría de las implementaciones, 'random' devuelve * muy * números aleatorios de baja calidad. – CodesInChaos

2

¿no podrías declarar una variable de partida y una variable aleatoria final y pasar esos? p.ej.

var 
varMyRandomNumber, x, y := extended; 

begin 

x := 100; 
y := 200; 

varMyRandomNumber := random(x,y); 
ShowMessage(IntToStr(varMyRandomNumber)); 
end; 

?

Hay un buen ejemplo de la utilización de un bucle for para establecer el inicio y final valores: http://www.freepascal.org/docs-html/rtl/system/random.html

3

Como ya se ha señalado, se debe utilizar

myrandomnumber := random(span) + basenumber; 

Sin embargo, para obtener números aleatorios de mejor calidad, debe llamar al

randomize(); 

una vez, al inicio de su aplicación, para inicializar el generador de números aleatorios.

-1

En primer lugar, le recomiendo que utilice Aleatorización al comienzo del programa (se cambia el algoritmo de selección del número).

para obtener un número aleatorio entre unos dos números que necesita este:

Result:=Min+random(10000)mod max + 1; 

No recuerdo el valor máximo para al azar, por lo que puede cambiarlo (TI no cambia nada).

Al usar 'mod' obtiene el módulo de la división Random y max. Se necesita +1, porque nunca se obtiene el número = máx., Solo el número = máx. 1, por lo que debe escribir +1.

¡Buena suerte!

+0

En ese caso, también necesita 'min - 1', de lo contrario, nunca obtendrá' min'. Pero en general en programación cuando decimos "entre X e Y" queremos decir "entre X inclusive y Y exclusivo" - esto simplifica un montón de cosas, por lo que la fórmula es solo mínima + aleatoria (span), sin necesidad de un +1. También su límite de 10000 es arbitrario y no funcionará para todos los valores de 'max', debe hacer' random (max - min) '. Para una solución de propósito general, también debe verificar que 'min <= max ', de lo contrario, las cosas se romperán. – Thomas

-1

Puede hacerlo como Int: = Aleatorio (100); da 100 números aleatorios. luego cuando lo muestre o lo use simplemente agregue 101 a ese número entero, así que es entre 100 y 200

+2

Esto no agrega nada a la respuesta de hace 4 años. –

Cuestiones relacionadas