El post que buscas se encuentra eliminado, pero este también te puede interesar

Random en C/C++

Para quienes necesiten saber como realizar o utilizar los numeros aleatorios en C o C++ aqui les dejo un manual que hice hace un tiempo, para quienes no sepan, con esta funcion ustedes podran ahorrase el testeo de sus aplicaciones o el llenado de variables, vectores, matrices, etc, simplemente llamando a esta funcion y se almacenaran los valores que puedan predefinir, y si deseas almacenar ascii es cosa de convertir el numero a char con un casting (eso es otra cosa).

Librerias:
En C:

stdlib.h

time.h

En C++:

time

Nota: no se deben omitir las librerías básicas de c y c++.

Una vez declaradas las librerías, las funciones que se deben implementar dentro de cada método son las siguientes:

srand(time(NULL));

Este debe ir al comienzo de cada método, después de la declaración de las variables locales, su función es inicializar la semilla time en 0.

La ventaja de hacer esto es que evitamos que se repita alguna secuencia en las distintas ejecuciones o llamadas de nuestro programa.

Requiere la librería time o time.h

Para asignar el numero aleatorio a una variable o a un vector se utiliza lo siguiente:

rand()

Esta semilla por si sola retorna números entre
0 y 2.147.483.647.

Si deseamos restringir la cantidad de numero de retorne el rand debemos hacer lo siguiente:

Para retornar números entre 0 y 100:
rand()%101;

Para retornar números entre 10 y 100:
10+(rand()%91);

así las distintas aplicaciones matemáticas que se pueden crear para retornar los números necesarios.

Para utilizar el rand(); debemos utilizarlo de la misma forma como asignamos un valor a una variable.

Si deseamos asignarle a Y (variable) o a V (vector) un numero aleatorio solo debemos hacer:

Almacenar con numeros cualquiera
Y=rand(); o V=rand();

Numeros de 0 a 100
Y=rand()%101; o V=rand()%101;

Numeros de 10 a 100
Y=10+(rand()%91); o V=10+(rand()%91);

Lo mismo seria para las matrices.

Ejemplos en C
Ejemplo en C++

Cualquier duda comenten o envien un MP

Espero les sea de utilidad...


A Pedido del Publico, les dejo unos ejemplos:

/* Codigo que llena un vector, una matriz y asigna una variable con numeros aleatorios en C
//Solo les dejo las librerias y funciones necesarias

#include<time.h> //libreria del random
/************matriz**************/
void llenar_matriz_rand(int enc[][]){
srand(time(NULL)); //semilla
for(i=1;i<MAX;i++){
for(j=1;j<=5;j++){
enc[j]=rand()%5; //rellena con numeros entre 0 y 4
}
}
}
/************vector**************/
void llenar_vector_rand(int v[]){
srand(time(NULL)); //semilla
for(i=1;i<MAX;i++){
v=rand()%10; //rellena con numeros entre 0 y 9
}
}
/***********numero random***********/
int numero_random(){
int n;
srand(time(NULL)); //semilla
n=rand()%200; //rellena con numeros entre 0 y 199
return n;
}



*************************************************
/*Suma de 2 numeros aleatorios (solo funcion) para C y C++*/

int suma(){
int a;
a = rand()%20 + rand()%30;
return a;
}


Espero les sirva, saludos

Anuncios

Comentarios Destacados

@axelfoley +13
lucianoaibar dijo:
es buena tu intencion pero.. porque no simplemente postear un curso de programacion en lenguaje C en vez de dar UN solo ejemplo mañana que sigue... como sumar dos numeros enteros? es una critica constructiva


esta bien, pero yo que tengo algo de idea de c tenia una duda con esta funcion y flama669 me saco esa duda...

Gracias flama669.
@adanmarin +13
lucianoaibar dijo:es buena tu intencion pero..
porque no simplemente postear un curso de programacion en lenguaje C
en vez de dar UN solo ejemplo
mañana que sigue... como sumar dos numeros enteros?

es una critica constructiva

Ami me sirvio

45 comentarios - Random en C/C++

@Danthrox
Buenísimo tu aporte!!!
@Hansom +2
Pseudoaleatorios.
@Rulestime +1
hey Muchisimas gracias, justo necesitaba exactamente esto jaja

=D
@axelfoley +13
lucianoaibar dijo:
es buena tu intencion pero.. porque no simplemente postear un curso de programacion en lenguaje C en vez de dar UN solo ejemplo mañana que sigue... como sumar dos numeros enteros? es una critica constructiva


esta bien, pero yo que tengo algo de idea de c tenia una duda con esta funcion y flama669 me saco esa duda...

Gracias flama669.
@mepreocupa +1
genial!!!
Muchas gracias! me sacaste de dudas.
@puma147
es verdad, gracias por esto!
@adanmarin +13
lucianoaibar dijo:es buena tu intencion pero..
porque no simplemente postear un curso de programacion en lenguaje C
en vez de dar UN solo ejemplo
mañana que sigue... como sumar dos numeros enteros?

es una critica constructiva

Ami me sirvio
@estragico +4
adanmarin dijo:
lucianoaibar dijo:es buena tu intencion pero..
porque no simplemente postear un curso de programacion en lenguaje C
en vez de dar UN solo ejemplo
mañana que sigue... como sumar dos numeros enteros?

es una critica constructiva

Ami me sirvio


a mi tambien me sirvio, es como una cosilla espesifica que estaba buscando, en vez de buscar en todo el tutorial, aca defrente lo encontre gracias man buena porte
@death_doll
oye y para inicializar arreglos de cadenas aleatoriamente??
@isaac109
gracias por la ayuda, me sirvio mucho
@irscire -1
Este es un programa creo que bien explicado solo copie , pegue y analizen. Es lo mas sensillo que lo puedo hacer:

///Universidad de Panama
///Ing.Informatica
///DNG

#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;
#include &lt;stdlib.h&gt;
int main()
{
int i,n, vec[1000];

randomize();
cout&lt;&lt;&quot;nintroduzca n numero = &quot;;
cin&gt;&gt;n;
cout&lt;&lt;&quot;nImprecion de los numeros randon (aliatorios) &quot;;
for(i=0;i&lt;n;i++)
{
vec=rand()%100;

cout&lt;&lt;&quot;n&quot;&lt;&lt;vec;
}
getch();
return 0;
}
@francofvillanuev
para que conio?
conio no funciona en linux ya que es esclusiva de un tipo de compilador
para el getch()?
te falto al using namespace std
o usar std::cout y std::cin
@estuardo311
como se hace para no repetir numeros en una matriz
@NelQR
gracias, me sirvio... +10!
@NelQR
flama669 dijo:
irscire dijo:Este es un programa creo que bien explicado solo copie , pegue y analizen. Es lo mas sensillo que lo puedo hacer:


La forma correcta para tu codigo es:

#include &lt;iostream&gt;
#include&lt;iomanip&gt;
#include &lt;time&gt;

using namespace std;

int main(){
int i,n, vec[1000];

srand(time(NULL));
cout&lt;&lt;&quot;nintroduzca n numero = &quot;;
cin&gt;&gt;n;
cout&lt;&lt;&quot;nImprecion de los numeros randon (aliatorios) &quot;;
for(i=0;i&lt;n;i++){
vec=rand()%100;
cout&lt;&lt;&quot;n&quot;&lt;&lt;vec;
}
getchar();getchar(); (esta no necesita de conio)
return 0;
}

ahi lo comparan, (esta completamente para C++), el otro era un hibrido y que solo funcionaria para winbugs, este compila en cualquier Sistema operativo.

saludos


No compiló en &quot;winbugs&quot;...
Debes cambiarle un par de cosas:

#include &lt;iostream&gt;
#include&lt;iomanip&gt;
#include &lt;time.h&gt;

using namespace std;

int main(){
int i,n, vec[1000];

srand(time(NULL));
cout&lt;&lt;&quot;Introduzca numero: &quot;;
cin&gt;&gt;n;
cout&lt;&lt;&quot;Impresion de los numeros random (aleatorios)&quot;&lt;&lt;endl;;
for(i=0;i&lt;n;i++){
vec=rand()%100;
cout&lt;&lt;vec&lt;&lt;endl;;
}
getchar();getchar(); //(esta no necesita de conio)
return 0;
}
@mensajero1hack
+10 a ver si te sacamos de novato... Muy buen post.
@ADRIAN_HANCOCK
Mi hermano muchisimas gracias... respeto opiniones de otros que no les agrado.... pro por lo que veo, a varios nos librast de una gran duda.... D VERDAD MUCHAS GRACIAS...
@chikisito95
mmmmmm jjejejej tengo q investigar para q sirve???
pero no encuentro nada de eso jejejej xD
@cocoballz
va a favoritos por q no alcanzo a leer y mira la hora .... XD pero buen aporte
@flowxxx
Excelente aporte muchas gracias
@kevin900
Excelente me sirvio de mucho gracias
@Misael1516
muy bueno si puedes saca mas guias asi q las guias nosmales q se consiguen por ahi no explican paso por paso como tu, asi si entiendo gracias
@cubbee
muchas gracias...!!! me sirvio entender esta funcion mi idolo bro!!!
@jony2325
hola amigo tendrás otro tutorial igual de bueno que este
para pasar
arrays de una funcion a otra?
sería un buen post
de ante mano gracias
@wyzer
como puedo hacerle parra que no se repitan los números dentro de un ciclo intente el ejemplo que pusiste arriba y no me salio

de ahi en fuera muy buen post saludos
@desma10
buen post disculpa sabes como en vez de que de numeros aleatorios de palabras alatorias
@elbura
muy bueno, me sirvio mucho para realizar un programa
@eduardo_ik9
Gracias Camarda Te lo agradesco de antemano
@Silkum
Nice, fijate que queria saber justamente restringir de donde a donde darle los valores aleatorios, gracias!
@WhiteLionGus
Bueno pues primero muchas gracias por la informacion sirve de mucho a veces, luego, soy un novato por asi decirlo en c y pues probe el de rand() asignandoselo a una variable llamada int dato, pero siempre me sale el mismo numero lo cual es logico porque es siempre la misma variable, y es que me urge generar numeros aleatorios declarando a una sola variable, porque quiero almacenar esos numeros en distintos bloques de memoria, tiene que ver con listas enlazadas dobles, para ya no tener que estar haciendo lo de scanf ni strcpy. trabajo con dev c++. aqui un ejemplo super sencillo que aun asi me sigue saliendo el mismo numero.

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
int main(){
int i;
int dato;
dato = rand();


for(i=0;i&lt;5;i++)
{
printf(&quot;%d es un numero aleatorion&quot;,dato);
}
getch();
return 0;
}
Gracias de nuevo.
@snake66
me faltaba incluir la libreria &lt;stdlib.h&gt; para que funcionara, gracias a ti lo soluciones mil gracias, +10
@juanchopito
snake66 dijo:me faltaba incluir la libreria &lt;stdlib.h&gt; para que funcionara, gracias a ti lo soluciones mil gracias, +10


con la libreria #include &lt;stdelib.h&gt; puedes poner el system(&quot;PAUSE&quot; es para que no se cierrre el programa y en pantalla te sale la lellenda &quot;press any key to continue&quot; o algo asi, esto va antes del retur, en ves del getch();
ejemplo:

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;conio.h&gt;
int main(){
int i;
int dato;
dato = rand();


for(i=0;i&lt;5;i++)
{
printf(&quot;%d es un numero aleatorion&quot;,dato);
}
system(&quot;PAUSE&quot;
return 0;
}

es solo algo de lo que eh aprendido en programacion, ya que estudio el la UABC en mexico, ing en computacion, voy en 4to semestre, no se mucho pero trato de investigar.

muy bueno tu post me saco de dudas, a FAV y mañana van puntines hoy me quede sin nada,


saludos.
@kllami
Creo que habias olvidado adjuntar los paréntis cuadrados para dar las coordenadas, aquí la solución al supuesto error en negrita:

#include<time.h> //libreria del random
/************matriz**************/
void llenar_matriz_rand(int enc[][]){
srand(time(NULL)); //semilla
for(i=1;i<MAX;i++){
for(j=1;j<=5;j++){
enc[j]=rand()%5; //rellena con numeros entre 0 y 4
}
}
}
/************vector**************/
void llenar_vector_rand(int v[]){
srand(time(NULL)); //semilla
for(i=1;i<MAX;i++){
v=rand()%10; //rellena con numeros entre 0 y 9
}
}
@kllami
Al parecer no salio, aqui va la correcta

#include<time.h> //libreria del random
/************matriz**************/
void llenar_matriz_rand(int enc[][]){
srand(time(NULL)); //semilla
for(i=1;i<MAX;i++){
for(j=1;j<=5;j++){
enc[j]=rand()%5; //rellena con numeros entre 0 y 4
}
}
}
/************vector**************/
void llenar_vector_rand(int v[]){
srand(time(NULL)); //semilla
for(i=1;i<MAX;i++){
v=rand()%10; //rellena con numeros entre 0 y 9
}
}
@heavymetal1059
Amigos y tienen alguna manera de como parar un rand antes que el otro?,

es decir tengo un partido de fut bol, equipo 1 y equipo 2,

quiero ponerle a ambos equipos 1 random, que tenga a liminite rand()%15+1, entonces los 2 random deben de comenzar al mismo tiempo pero quiero que cuando se llene la primer matriz se detenga el otro, y que no termine el random...

me explico? y las matrices son iguales 2x4, osea cuando una se llene primero, que la otra se detenga.

saludos y espero con ansias su ayuda =D
@braxdroid
¿Que Ide me recomendáis?
Ah y muy bueno el tuto +10.
Saludos.