title image


Smiley Re: Problem mit Zufallszahlen
Ich hab aus "man 3 rand" von Suse 9.2 den folgenden Vorschlag ausgeliehen und mal rumprobiert.



Was hier für verschieden Werte von seed raus kommt, sieht gar nicht so schlecht aus. Die Anzahlen der 0/1 Kombinationen sind wie erwartet.

static unsigned long next = 1;



/* RAND_MAX assumed to be 32767 */

int myrand(void) {

next = next * 1103515245 + 12345;

return((unsigned)(next/65536) % 32768);

}



void mysrand(unsigned seed) {

next = seed;

}





int zufall(void)

{

return( rmyand() % 2 ); // Zufallszahlen von 0 oder 1 erzeugen

}





int main( int argc, char **argv )

{

int i;



if ( argc > 1 )

mysrand( atoi( argv[1] ) );



for ( i = 1; i<=5; i++ )

printf( "%d ", myrand() );



printf( "\n" );

}



----------------------------------------------------------------------



0: 00010 10: 10101 20: 00010 30: 10001 40: 00101

1: 00111 11: 10100 21: 00011 31: 10000 41: 00111

2: 01101 12: 11111 22: 01000 32: 11101 42: 11110

3: 11100 13: 01011 23: 11000 33: 01110 43: 10001

4: 10111 14: 00000 24: 10111 34: 00110 44: 10001

5: 11011 15: 01001 25: 11110 35: 01001 45: 11010

6: 01000 16: 11111 26: 01101 36: 11000 46: 01011

7: 00001 17: 10110 27: 00101 37: 10010 47: 00100

8: 00010 18: 10101 28: 00010 38: 11011 48: 01100

9: 01110 19: 01100 29: 11011 39: 01100 49: 11111





50: 10110 60: 00001 70: 10110 80: 00101 90: 10011

51: 10001 61: 00010 71: 10101 81: 10010 91: 00001

52: 01001 62: 11110 72: 01100 82: 11011 92: 01100

53: 00010 63: 10101 73: 00010 83: 10001 93: 00111

54: 00111 64: 10100 74: 00011 84: 10000 94: 00111

55: 11101 65: 01111 75: 11000 85: 01111 95: 11100

56: 11100 66: 01011 76: 11000 86: 01110 96: 11001

57: 10111 67: 00000 77: 10111 87: 00100 97: 10010

58: 11010 68: 11001 78: 01110 88: 11101 98: 01010

59: 01000 69: 11011 79: 01101 89: 11010 99: 01001





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: