Generar numeros al azar

06/04/2005 - 21:41 por Bárbara González | Informe spam
Necesito generar números al azar con C# como se hace en VB: Ejm:
int(6*Rnd+1).
Saben como?

Gracias de antemano
Bárbara González
Venezuela.-

Preguntas similare

Leer las respuestas

#6 Sergio Cossa
07/04/2005 - 23:50 | Informe spam
Me ha pasado, al generar varios random seguidos en máquinas muy rápidas, que
obtenía la misma secuencia...

Fue necesario ir cambiando la semilla en cada random.

Saludos.
Sergio Cossa
Argentina

Cervetto Refrigeración S.R.L.
"Octavio Hernandez" wrote in message
news:e%

No debería, el reloj siempre camina...

Slds - Octavio

"Bárbara González" escribió en el mensaje
news:
Lo que noto es que axial siempre me genera la misma secuencias de números.


Bárbara González
Venezuela.-
"Octavio Hernandez" escribió en el mensaje
news:
Bárbara,

Mejor sería así:

int t = System.DateTime.Now.Millisecond;
System.Random o_random = new System.Random(t); // un solo objeto
for(int x=0; x < 5000; x++)
{
int n = o_random.Next(0,999);
}

Slds,

Octavio





Respuesta Responder a este mensaje
#7 Rodin
08/04/2005 - 15:06 | Informe spam
Utiliza este código, puede ser mejor

Random RND = new Random(unchecked((int)
DateTime.Now.Ticks));

double variable = double.Parse ((RND.Next(0,1000).ToString
("##########.##")));

double variable = double.Parse ((RND.Next(0,1000).ToString
("##########.##")));
variable = variable / 100;
this.textBox1.Text = variable.ToString("##########.##");

Le puedes cambiar la forma de presentación.

Att: Rodin
Respuesta Responder a este mensaje
#8 Octavio Hernandez
08/04/2005 - 15:24 | Informe spam
Gracias al post de Rodin, me he dado cuenta de que el posible problema está
en que en el código de Bárbara se usa como semilla:

DateTime.Now.Millisecond

cuyos posibles valores son entre 0 y 999. Lo adecuado es usar una como la
que él propone:

DateTime.Now.Ticks

con un espectro de variación mucho más amplio...

Salu2, Octavio

"Sergio Cossa" escribió en el mensaje
news:
Me ha pasado, al generar varios random seguidos en máquinas muy rápidas,
que
obtenía la misma secuencia...

Fue necesario ir cambiando la semilla en cada random.

Saludos.
Sergio Cossa
Argentina

Cervetto Refrigeración S.R.L.
"Octavio Hernandez" wrote in message
news:e%

No debería, el reloj siempre camina...

Slds - Octavio

"Bárbara González" escribió en el mensaje
news:
Lo que noto es que axial siempre me genera la misma secuencias de
números.


Bárbara González
Venezuela.-
"Octavio Hernandez" escribió en el mensaje
news:
Bárbara,

Mejor sería así:

int t = System.DateTime.Now.Millisecond;
System.Random o_random = new System.Random(t); // un solo objeto
for(int x=0; x < 5000; x++)
{
int n = o_random.Next(0,999);
}

Slds,

Octavio










Respuesta Responder a este mensaje
#9 Eduardo Diaz
08/04/2005 - 16:29 | Informe spam
El uso de los numeros al azar es importante, si es para un juego, la funcion
rand esta bien, pero si lo vas a usar para simular o en criptografia, lo
mejor es usar algo como
System.Security.Cryptography.RandomNumberGenerator, y
System.Security.Cryptography.RNGCryptoServiceProvider.

En su blog, Michalel Howard, de Microsoft plantea una manera mejor de
generar numeros aleatorios, usando la funcion ADVAPI32!RtlGenRandom,.
La ventaja de esta función es que tiene varias fuentes de "entropía", como
se puede leer en el blog: puedes leerlo en
http://blogs.msdn.com/michael_howar...3379.aspx.

Basado en esa información escribi una rutina para generar numeros aleatorios:


using System;
using System.Runtime.InteropServices;

class DemoRand
{
static void Main()
{
for (int i = 0; i < 100; i++)
Console.Write("{0} ", GenRandom(1000));

}

static byte[] d = new byte[4];

static int GenRandom(int mod)
{
SystemFunction036(d, 4);
return BitConverter.ToInt32(d, 0) % mod;
}

[DllImport("ADVAPI32.DLL", EntryPoint="SystemFunction036")]
static extern void SystemFunction036(byte[] data, int size);
}

Hay que pulirla, pero es la base para algo bastante aleatorio.

Saludos.
Eduardo Diaz
http://www.lnds.net/blogs/lndp
Respuesta Responder a este mensaje
#10 c-ristian
27/12/2010 - 16:49 | Informe spam
Bárbara González escribió el 06/04/2005 21:41 :
Necesito generar números al azar con C# como se hace en VB: Ejm:
int(6*Rnd+1).
Saben como?

Gracias de antemano
Bárbara González
Venezuela.-


Es muy fácil:

System.Random rnd = new System.Random();
int numeroAzar = rnd.Next(5000, 9999); //generará un número al azar entre 5000 y 9999.

No sé porqué se complican tanto en ponerle parámetros como System.DateTime.Now.Millisecond o System.DateTime.Now.Second, si con eso lo que hacen es mandarle un seed fijo y generan siempre el mismo número.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida