Hej
Jeg ved ikke om det er det rigtige sted at poste det her, for det har ikke så meget relavans for dit spørgsmål, men jeg tog en kikker på rand() funktionen, der bliver brugt i koden, og den forekommer mig temmelig mærkelig.
Ved nærmere eftersyn (og lidt mukken frem og tilbage) synes jeg at den ligger distributionerne af tallene alt for meget på samme måde hver, og faktisk ikke opfører sig spor tilfældigt. Det kan også være at jeg har brugt den forkert (jeg er MEGET ny til det her), men prøv at kik på det her.
//
// Checking the distribution of the rand() function
// author: Kenneth Graakjaer, 2006
// email: aisforatom@gmail.com
//
// This program uses rand() to generate a series of
// random numbers between 0 - 9 and logs the distribution.
// After running a specified number of tests, it
// outputs the distribution.
//
//
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[]){
unsigned int noOfCounts;
int distribution[10] = {0}; //set all members of the array to 0
int accumulator = 0; //keeps track of the number of runs actually made.
//my way of being anal about the program actually
//performing as it should.
cout << "Generate a series of random numbers between 0 - 9.\\n"
<< "Enter runs and see distributions.\\n"
<< "Input number of runs: ";
cin >> noOfCounts;
//generates the numbers. and increments that value
//of the integer array.
for(int i = 0; i < noOfCounts; i++)
{
distribution[rand()%10]++;
}
//display distribution array
for(int i = 0; i < 10; i++){
cout << i << ": " << distribution[i] << endl;
accumulator += distribution[i];
}
cout << "Accumulator reports " << accumulator << " distributions in total.\\n";
//the default pause message.
system ("PAUSE");
return 0;
}
Problemet er at hvis man ber den lave det samme antal udregninger er distributionen noget nær det samme. Og hvis man ber om bare 1 udregning, bliver den _altid_ 1.
Jeg ved ikke hvad rand() er en del af, men er det muligt at der findes en anden og bedre metode at lave en tilfældig distribution på? Jeg ved at jeg får brug for det i fremtiden.
Venlig hilsen
kenneth
Indlæg senest redigeret d. 15.04.2006 03:31 af Bruger #9838