0から65536まで乱数で発生させるにはどのようにしたらよいのでしょうか?
もちろんC言語です
よろしくお願いします。
乱数を発生させたい
Re:乱数を発生させたい
精度次第で色々方法があります。
http://ja.wikipedia.org/wiki/%E6%93%AC% ... 1%E6%95%B0
>0から65536まで乱数で発生させるにはどのようにしたらよいのでしょうか?
65536(0x10000)は17bit必要なので勝手な解釈で65535(0xffff)までとさせてもらいます。
65535までと言うことで、簡単な方法です。
unsigned short randam()
{
static unsigned short rand = 441;
rand *= 17567;
rand += 5;
return rand;
}
単純なので、4096周期で同じ数値列に戻ります。0~65535を完全網羅できません。
もっと精度がほしかったら、また別の方法をご紹介します。
http://ja.wikipedia.org/wiki/%E6%93%AC% ... 1%E6%95%B0
>0から65536まで乱数で発生させるにはどのようにしたらよいのでしょうか?
65536(0x10000)は17bit必要なので勝手な解釈で65535(0xffff)までとさせてもらいます。
65535までと言うことで、簡単な方法です。
unsigned short randam()
{
static unsigned short rand = 441;
rand *= 17567;
rand += 5;
return rand;
}
単純なので、4096周期で同じ数値列に戻ります。0~65535を完全網羅できません。
もっと精度がほしかったら、また別の方法をご紹介します。
Re:乱数を発生させたい
私のがお望みじゃないのはわかりました。
では、規約に従ってください。
>使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。
求めてる単純さと言うか使い方の例を書いてください。
こんな風に使いたいと具体的に。
では、規約に従ってください。
>使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。
求めてる単純さと言うか使い方の例を書いてください。
こんな風に使いたいと具体的に。
Re:乱数を発生させたい
どこまで、理解されて質問されているのかわからないので、
とりあえず、次のプログラムを動かしてみてください。
変わります。ですから、みなさんが環境をとしつこく言われているわけです。
RAND_MAXが32767の環境が一番多く、0から32767までなら上のように簡単です。
0から65536までほしいと言われるので、一度の乱数発生では作れずに、いろんな方法が
あるわけです。また、発生した乱数がどれだけ均一であることを要求しているかによっても
作り方が変わってきます。ですから、目的は何だって話になります。
とりあえず、次のプログラムを動かしてみてください。
#include <stdio.h> #include <stdlib.h> int main(void) { int i; printf("RAND_MAX=%d\n",RAND_MAX); for(i=0;i<100;i++) printf("%7d ",rand()); return 0; }RAND_MAX はいくらが表示されましたか?このRAND_MAXはコンパイラなどの環境によって
変わります。ですから、みなさんが環境をとしつこく言われているわけです。
RAND_MAXが32767の環境が一番多く、0から32767までなら上のように簡単です。
0から65536までほしいと言われるので、一度の乱数発生では作れずに、いろんな方法が
あるわけです。また、発生した乱数がどれだけ均一であることを要求しているかによっても
作り方が変わってきます。ですから、目的は何だって話になります。