Newsgroup: it.comp.lang.c++
Titolo: Help numeri random

Ho iniziato da appena una settimana a fare qualcosa con C++ ma non ci sto
capendo granche', anche perche' non ho basi in altri linguaggi di
programmazione.
Nel programma che sto cercando di realizzare devo inserire alcuni numeri
random (devono stare nell'intervallo 3 < x < 18). ma non so neanche da che
parte iniziare (nell'help di C++ builder ho trovato Randomize ma non capisco
come devo strutturare l'istruzione).
Qualcuno mi puo' aiutare?
Grazie
Ciao
Orlando

> (devono stare nell'intervallo 3 < x < 18)
Ma ti serviva in C++?
Io cmq te lo posto in C, poi fai te.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MIN 3
#define DIFF 15 //differenza tra minimo e massimo
void main( void )
{
   int i;
   int x = 0;
   //inizializzazione col timer per avere numeri sempre differenti
   //obbligatorio se vuoi avere numeri diversi
   srand( (unsigned)time( NULL ) );
   //for ipotetico di dieci numeri
   for( i = 0;   i < 10;i++ )
   {
      /*minimo + la differenza (MAX-MIN) moltiplicato la funzione
      che restituisce un numero casuale tra 0 e RAND_MAX*/
      x = MIN+( DIFF *rand()/RAND_MAX);
      printf( "  %d\n", x );
   }
}
BYEZ!!!!

PS: ho scoperto che il primo numero è sempre lo stesso, quindi ho messo una
pezza per non far accadere questo evento:
dopo la srand, fai una bella rand( );
spero ti sia stato di aiuto

 ha scritto nel messaggio
news:a3ljek$g2f$1...@pegasus.tiscalinet.it...

Utilizzando funzioni della libreria standard, derivate dal C, è possibile
generare una sequenza di numeri pseudocasuali compresi tra 0 ed un massimo.
Ad esempio:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
using namespace std;
int main()
{
 int i, rnum;
 const int max = 18, min = 3;
 srand( (unsigned)time(0) );
 for( i = 0;   i < 10;i++ ) {
  rnum = (int) ((double)max * rand() / RAND_MAX);
  if (rnum <= min) {
   i--;
   continue;
  }
  cout << rnum << '\n';
 }
 return 0;
}
Questo programma crea una sequenza di 10 numeri pseudocasuali. La funzione
srand serve ad inizializzare il generatore di numeri casuali, e va chiamata
una sola volta nel programma. Il ciclo if all'interno del for serve a non
considerare i numeri inferiori al 3.
Ciao,
Cecco
PS: se consulti l'help in linea, stai attento a non utilizzare funzioni non
standard; nel Builder mi pare che sia specificato.

Grazie mille
Ciao
Orlando

Hai notato la prima volta restituisce sempre lo stesso numero?

Cmq fottiti che neanche mi hai ringraziato!!

OOPSSS!!
scusami mille!
ho risposto al post sbagliato

 Hai notato la prima volta restituisce sempre lo stesso numero?
A me no. Uso VC++ 6
Ciao,
Cecco

 ha scritto nel messaggio
news:V_v78.29939$3J1.8...@news2.tin.it...

Scusate se mi intrometto, la cosa mi incuriosiva.
Vado lurkando il ng ed e' la prima volta che posto un messaggio.
Ho fatto una serie di prove ed effettivamente la serie di uscite e' casuale
ma il primo numero sella serie non lo e'.
Quindi mi sembra, come diceva Ashesh, che dopo la srand(time) sarebbe meglio
fare una rand a vuoto.
Ciao,
Myszka

Scusate se rompo ancora; stasera sono riuscito a provare i codici che mi
avete dato. Premetto che io, cliccando su un button, devo inserire 6 numeri
random in 6 caselle di testo, e questo per 3 volte (ho tre possibilita' di
cliccare). Il problema e' che col codice di Ashesh mi esce sempre 17 ( anche
dopo avere aggiunto rand(); ), mentre con quello di Betti mi escono dei
numeri,si, random, ma se continuo a cliccare si ripetono quasi sempre gli
stessi (per es. 3 volte 15, poi 14, 17 ed ancora 15 per due o tre volte
!!!). Ragazzi, o sono proprio impedito e mi conviene desistere oppure boh.
Grazie in ogni caso per la collaborazione
Ciao
Orlando

 ha scritto nel messaggio
news:a3n2hs$lgu$1...@pegasus.tiscalinet.it...

Ciao,
gironzolando tra i ng ho trovato questo frammento, mi pare il piu' corto
possibile e forse il piu' comodo.
Invece della define si puo' fare un metodo.
#include <stdio.h>
#include <time.h>
#include <windows.h>
#define GetRandom( min, max ) ((rand() % (int)(((max) + 1) - (min))) +
(min))
void main()
{
  srand((unsigned int)time(NULL));
  while(1)
  {
    int i = GetRandom(1,6);
    printf("%d\n",i);
    Sleep(1000);
  }
}
Ciao,
Myszka

Fino a stasera non ho modo di provarlo, CMQ per ora ti ringrazio.
Poi ti faro' sapere.
Ciao
Orlando