что то не получается рандом на си. взял способ отсюда: http://www.mir-koda.ru/full_leson.php?id=8
#!/usr/bin/tcc -run
#include <stdio.h>
#include <stdlib.h>
int random5(){
return 1 + rand() %5;
}
int one = 0;
int two = 0;
int three = 0;
int four = 0;
int five = 0;
int test(){
int r = random5();
if(r == 1) one++;
if(r == 2) two++;
if(r == 3) three++;
if(r == 4) four++;
if(r == 5) five++;
return 0;
}
int i = 10000000;
int saved = 10000000;
int main(){
while(i--){
test();
}
printf("%d", one);
printf("%d", two);
printf("%d", three);
printf("%d", four);
printf("%d", five);
printf("checksum: %d", one + two + three + four + five == saved);
return 0;
}
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
//>>>>1998464
//>>>>1999544
//>>>>1999008
//>>>>2001252
//>>>>2001732
//>>>>checksum: 1
//>>>>
тут несколько выхлопов, по которым видно, что распределение не равномерное, на бОльших числах получается больше. Как исправить?
И еще. Там же, по ссылке, написано, что rand() без аргументов возвращает одно и то же число. Я попробовал, возвращает разные.