Devo generare numeri nell'intervallo [-100; +2000] in C++. Come posso farlo con Rand se sono disponibili solo numeri positivi? Ci sono dei modi veloci?Numeri casuali e negativi
risposta
generare un numero casuale tra 0 a 2100 quindi sottrarre 100.
Una rapida ricerca google alzato un decent looking article on using Rand(). Include esempi di codice per lavorare con un intervallo specifico alla fine dell'articolo.
È possibile generare un numero da 0-2100 e sottrarre 100?
generare un numero casuale compreso tra 0 e 2100, e sottrarre 100.
ecco il codice.
#include <cstdlib>
#include <ctime>
int main()
{
srand((unsigned)time(0));
int min = 999, max = -1;
for(size_t i = 0; i < 100000; ++i)
{
int val = (rand()%2101)-100;
if(val < min) min = val;
if(val > max) max = val;
}
}
Attualmente la mia sintassi C++ è un po 'arrugginito, ma si dovrebbe scrivere una funzione che prende due parametri: size
e offset
.
Quindi si generano numeri con il valore size
come valore massimo e successivamente si aggiunge l'offset (negativo) a tale valore.
La funzione sarà simile:
int GetRandom(int size, int offset = 0);
e che sarebbe stato nel suo caso con:
int myValue = GetRandom(2100, -100);
In C++ 0x saranno migliorare questo per fornire un migliore supporto per esso con un libreria standard.
È possibile utilizzare le funzioni casuali C++ TR1 per generare numeri nella distribuzione desiderata.
std::random_device rseed;
std::mt19937 rng(rseed());
std::uniform_int<int> dist(-100,2100);
std::cout << dist(rng) << '\n';
Per quelli senza TR1, boost :: random è abbastanza vicino. – MSalters
- 1. Haskell e numeri casuali
- 2. Numeri int64 e float64 casuali
- 3. C# probabilita 'e numeri casuali
- 4. Kadane algoritmo numeri negativi
- 5. Rappresentazioni di compilatori e numeri negativi
- 6. Set CMD/a, modulo e numeri negativi
- 7. Spesso i numeri grandi diventano negativi
- 8. numeri casuali in PySpark
- 9. Numeri casuali ponderati
- 10. mysql previene i numeri negativi
- 11. itoa per i numeri negativi?
- 12. Numeri casuali con C#
- 13. TryParse fallito con numeri negativi
- 14. distribuzione dei numeri casuali
- 15. Numeri casuali non ripetuti
- 16. numeri casuali probabilità
- 17. speciale di numeri casuali
- 18. C++ 11 numeri casuali
- 19. Numeri casuali in C
- 20. Analisi numeri casuali
- 21. Seed() e numeri casuali in Python
- 22. Numeri casuali e funzione floor vs round
- 23. Cosa succede quando si copia un motore di numeri casuali e una distribuzione di numeri casuali?
- 24. Come generare numeri casuali diversi?
- 25. Boost generatore di numeri casuali
- 26. c - generatore di numeri casuali
- 27. Generatore di numeri casuali Crossplatform
- 28. Generazione contemporanea di numeri casuali
- 29. Spark - Generazione di numeri casuali
- 30. Algoritmo per numeri casuali "lisci"
Questo non darà una distribuzione uniforme! Inoltre, trovare il numero minimo e massimo di 100000 di tali numeri non è pertinente alla domanda. – darklon
Anche se per caso 'val' era' -100' ogni volta, il 'max' risultante sarebbe sbagliato. Idem per il minimo. –
@Cornelius, @ Ben: chi se ne importa? È solo una demo. Se avessi postato solo '(rand()% 2101) -100' sarebbe stato meglio di un campione eseguibile e compilabile? Per favore. –