乱数を発生させたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tt

乱数を発生させたい

#1

投稿記事 by tt » 15年前

0から65536まで乱数で発生させるにはどのようにしたらよいのでしょうか?
もちろんC言語です
よろしくお願いします。

Dixq (管理人)

Re:乱数を発生させたい

#2

投稿記事 by Dixq (管理人) » 15年前

環境は何ですか?
リナックスやウィンドウズ、そのコンパイラなど

しかばね

Re:乱数を発生させたい

#3

投稿記事 by しかばね » 15年前

環境はなんですか[img]../pic/i/63912.gif[/img]

規約を読んで下さい。

バグ

Re:乱数を発生させたい

#4

投稿記事 by バグ » 15年前

「乱数発生アルゴリズム」でググれば色々とヒットしますよ

softya

Re:乱数を発生させたい

#5

投稿記事 by softya » 15年前

精度次第で色々方法があります。
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を完全網羅できません。
もっと精度がほしかったら、また別の方法をご紹介します。

tt

Re:乱数を発生させたい

#6

投稿記事 by tt » 15年前

環境はwindowsです。
みなさんありがとうございます。
単純な関数はないのですかね?

softya

Re:乱数を発生させたい

#7

投稿記事 by softya » 15年前

私のがお望みじゃないのはわかりました。

では、規約に従ってください。
>使っているOS名・コンパイラ名・ライブラリ名も明記しましょう。

求めてる単純さと言うか使い方の例を書いてください。
こんな風に使いたいと具体的に。

non

Re:乱数を発生させたい

#8

投稿記事 by non » 15年前

どこまで、理解されて質問されているのかわからないので、
とりあえず、次のプログラムを動かしてみてください。
#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までほしいと言われるので、一度の乱数発生では作れずに、いろんな方法が
あるわけです。また、発生した乱数がどれだけ均一であることを要求しているかによっても
作り方が変わってきます。ですから、目的は何だって話になります。

閉鎖

“C言語何でも質問掲示板” へ戻る