前提・実現したいこと
C言語を用いてXorshift関数をつくってさいころのぞろ目が生まれる回数を調べたくコードを書いたのですが
どうもなにかshift(<<)のところでエラーが出てしまいます。シフトをどのように変えたらよいのでしょうか。
発生している問題・エラーメッセージ
エラーメッセージ Segmentation fault
該当のソースコード
#include <stdio.h>
#include <time.h>
unsigned long xorshift(unsigned long *a){
printf("%lu\n", a);
*a = *a^(*a<<13);
*a = *a^(*a>>17);
*a = *a^(*a<<43);
return *a;
}
unsigned long make_seed(){
time_t timer;
time(&timer);
return timer;
}
int roll_dice(unsigned long *seed){
int prev, curr;
prev = xorshift(seed)%61;
for(int i = 0; i < 5; i++){
curr = xorshift(seed)%61;
if(prev != curr) return 0;
}
return 1;
}
int main(int argc, char *argv[])
{
int num = 0;
int i;
for(i=0;i<=100000;i++)
{
if(roll_dice(make_seed()) == 1){
num += 1;
}
}
printf("%d",num);
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。