001: |
002: |
003: |
004: |
005: |
006: |
007: |
008: |
009: |
010: |
011: |
012: |
013: |
014: |
015: |
016: |
017: |
018: |
019: |
020: |
021: |
022: |
023: |
024: |
025: |
026: |
027: |
028: |
029: |
030: |
031: |
032: |
033: |
034: |
035: |
036: |
037: |
038: |
039: |
040: |
041: |
042: |
043: |
044: |
045: |
046: |
047: |
048: |
049: |
050: |
| /* rand6.c */ |
|
#include <stdio.h> |
#include <stdlib.h> |
#include "mytmut.c" |
|
int mkrand6(void) |
{ |
double rd,rc; |
int r,rm; |
rm=6; |
rd=(rand()*1.0)/(RAND_MAX*1.0); |
rc=rd*rm+1.0; |
r=rc; |
if (rc<(1.0)) { r=1; } |
if (rc>(rm*1.0)) { r=rm; } |
return r; |
} |
|
void randomseed(void) |
{ |
int seed; |
int tm; |
tm=tmget(); |
seed=tm-tm/65536*65536; |
srand(seed); |
} |
|
int main(void) |
{ |
int dice[6]; |
int i,r,dn,n; |
double p; |
dn=6; |
n=1200000; |
randomseed(); |
for (i=0; i<dn; i++) { |
dice[i]=0; |
} |
for (i=0; i<n; i++) { |
r=mkrand6()-1; |
dice[r]=dice[r]+1; |
} |
for (i=0; i<dn; i++) { |
p=(dice[i]*1.0)/(n*1.0); |
printf("Dice No.%d => %d : %f \n",i+1,dice[i],p); |
} |
|
return 0; |
} |
| 001: |
002: |
003: |
004: |
005: |
006: |
007: |
008: |
009: |
010: |
011: |
012: |
013: |
014: |
015: |
016: |
017: |
018: |
019: |
020: |
021: |
022: |
023: |
024: |
025: |
026: |
027: |
028: |
029: |
030: |
031: |
032: |
033: |
034: |
035: |
036: |
037: |
038: |
039: |
040: |
041: |
042: |
043: |
044: |
045: |
046: |
047: |
048: |
049: |
050: |
| - |
- |
- |
乱数を使うのに必要 |
時間を得るのに必要 |
- |
1から6までの整数を作る乱数関数 |
- |
- |
- |
ここを変えるとrmまでの整数となる |
- |
- |
- |
- |
- |
- |
- |
- |
乱数の種を時間を関数として設定する |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
配列変数の要素は0〜5 |
(Base0) |
- |
- |
- |
乱数の種を設定 |
- |
- |
- |
- |
6までの整数−1をrに代入 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
|