Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design
OnePlus 15 nasce per alzare l'asticella delle prestazioni e del gaming mobile. Ma non solo, visto che integra un display LTPO 1,5K a 165 Hz, OxygenOS 16 con funzioni AI integrate e un comparto foto con tre moduli da 50 MP al posteriore. La batteria da 7.300 mAh con SUPERVOOC 120 W e AIRVOOC 50 W è la ciliegina sulla torta per uno smartphone che promette di offrire un'esperienza d'uso senza alcun compromesso
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media
Vediamo come si comporta il Ryzen 5 7500X3D, nuovo processore di casa AMD che fonde 6 core Zen 4 con la tecnologia 3D V-Cache, particolarmente utile in scenari come il gaming. Annunciato a un prezzo di listino di 279€, il nuovo arrivato sarà in grado di diventare un riferimento per i sistemi budget? Ecco cosa ne pensiamo.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-03-2003, 20:16   #1
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
[C++] random in un for

devo calcolare una serie di random tra 3 e 18 (circa una ventina) e ho notato che mi escono tutti valori uguali anche usando il time di sistema come seme per la randomizzazione... come devo fare?

facendo


Codice:
#include <time.h>

for (int i=0;i<n; i++){
  time_t seme;
  seme=time();
  srand(&seme);
  x[i]=rand(); // vettore di uscita
}
il programma lavora in funzione del tempo, ma essendo il for un'operazione abbastanza veloce... il tempo non passa!!!
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2003, 20:30   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Codice:
srand((unsigned)time(NULL)); 

for (int i=0;i<n; i++){ 
  x[i]=rand(); // vettore di uscita 
}
Non importa inizializzare ogni volta il generatore di numeri casuali...anzi andrebbe inizializzato una sola volta in tutto il programma...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 00:25   #3
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
il problema è che i numeri continuano ad essere uguali...

non genera numeri diversi...

è stressante...

Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 01:53   #4
matpez
Senior Member
 
L'Avatar di matpez
 
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
Non mi ricordo il C++ tanto bene ma nn potresti fare un randomize
  • #include <time.h>
    #include <stdlib.h>

    randomize();

    for(i=0;i<n;i++)
    {
    x[i]=random(16)+3; //random da 0 a 15 (+3 = 3 a 18)
    }

Dimmi se ti va
matpez è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 09:39   #5
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Re: [C++] random in un for

Quote:
Originally posted by "Kralizek"

devo calcolare una serie di random tra 3 e 18 (circa una ventina) e ho notato che mi escono tutti valori uguali anche usando il time di sistema come seme per la randomizzazione... come devo fare?

facendo


Codice:
#include <time.h>

for (int i=0;i<n; i++){
  time_t seme;
  seme=time();
  srand(&seme);
  x[i]=rand(); // vettore di uscita
}
il programma lavora in funzione del tempo, ma essendo il for un'operazione abbastanza veloce... il tempo non passa!!!
le funzioni rand non sono adatte alla generazione di valori casuali troppo ravvicinati (con le attuali macchine, molto veloci). Ti conviene passare a qualche altra libreria ( ad esempio trovi diversi generatori casuali nelle librerie boost http://www.boost.org ).
Se ti basta un generatore pseudo-casuale ( deterministico quindi ), la seguente dovrebbe funzionare bene (non chiedermi dove l'ho presa... ormai non lo ricordo piu' )

Codice:
#define a15 452807053
#define mask INT_MAX

int clock_seed()
{
    int seed;
    unsigned int st;
    time_t times;

    times = time(0);

    st = (unsigned int) times / 2;
    seed = (int) st;
    return ( ((seed%2) == 0) ? seed+1 : seed );
}

int rnd7()
{
    static int IX = clock_seed();
    IX = IX * a15;
    return((IX < 0)? IX & mask : IX);
}
( La funzione ritorna un intero casuale, per ottenere un float basta che fai una conversione e una scalatura, su macchine a 32bit la distribuzione di float risultante e' in generale buona)
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 10:14   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Codice:
srand((unsigned)time(NULL)); 

for (int i=0;i<n; i++){ 
  x[i]=rand(); // vettore di uscita 
}
A me così torna numeri diversi...
Sia con VC++ che con Mingw GCC...
Ho un 1800+...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 10:22   #7
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originally posted by "cionci"

Codice:
srand((unsigned)time(NULL)); 

for (int i=0;i<n; i++){ 
  x[i]=rand(); // vettore di uscita 
}
A me così torna numeri diversi...
Sia con VC++ che con Mingw GCC...
Ho un 1800+...
Dipende dalla libreria C utilizzata penso, io un po' di tempo fa avevo avuto problemi invece...
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 10:27   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "/\/\@®¢Ø"


Dipende dalla libreria C utilizzata penso, io un po' di tempo fa avevo avuto problemi invece...
Chiaro...è per quelo che ho specificato il compilatore
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-03-2003, 10:40   #9
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
ah...dimenticavo... nel mio caso mi servivano float e quindi probabilmente era nella conversione che la distribuzione omogenea andava a farsi benedire
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2003, 19:16   #10
~Blissard~
Senior Member
 
L'Avatar di ~Blissard~
 
Iscritto dal: Mar 2003
Città: Genova
Messaggi: 4330
Una volta avevo fatto un prog che generava numeri sempre diversi salvando quelli non ancora "estratti" in un vettore dinamico che ad ogni estrazione veniva letto e confrontava il nuovo numero, non è il massimo dell ottimizzazione però funzionava ed era abbastanza simile a quello postato inizialmente basta aggiungere il vettore e la funzione di confronto
~Blissard~ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
SONY BRAVIA 8 II e BRAVIA Theatre System 6: il cinema a casa in formato compatto SONY BRAVIA 8 II e BRAVIA Theatre System 6: il c...
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Fire TV Stick 4K Select a prezzo da urlo...
IBM presenta i nuovi processori quantist...
Amazon Haul esplode di sconti: con l'off...
Dacia Sandriders, incontro con piloti e ...
Quanto costerà la Steam Machine? ...
QNAP TS-h1655XeU-RP: filesystem ZFS e co...
Etica e software libero protagonisti a S...
Il reattore che ricarica le batterie sca...
AMD FSR Redstone: la nuova tecnologia ba...
Meta Quest 3S a un prezzo senza preceden...
Rischio per gli SSD? I driver chipset AM...
Quanto sono 'woke' le intelligenze artif...
Rockstar rilancia Red Dead Redemption su...
Blue Origin centra l'obiettivo: New Glen...
Regali di Natale spendendo poco con il B...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v