ここから質問投稿すると、最大10000ポイント当たる!!!! >>

random()関数で、擬似乱数を1000個発生させる
intx;
x=random()% 10000;
/*0-9999の擬似乱数1個をxに代入*/

これの比較回数を求めたいのですが↑のx=random()%の%の意味とその後の10000という数字の意味がわかりません;;
↑の文を解りやすく説明していただけるとありがたいのですが^^;

A 回答 (3件)

Cで0~9999の擬似乱数を作るのは、random(10000)のはずですが。

。rand()%10000 とほぼ同じです。
    • good
    • 1

何の言語の話しか、質問に、はっきり書いてないのは、不完全では。


;や/*やintなどからC言語らしいが。
演算子について、「C 演算子」でWEB照会するべし。
http://www.asia.microsoft.com/japan/developer/li …
random関数については
「Random() 関数 C」でWEB照会のこと。
http://www.media.osaka-cu.ac.jp/~k-abe/2001-JS-O …の「random関数」の部分など参照。
    • good
    • 0
この回答へのお礼

すみません、アルゴリズムとかは初心者なので^^;
%とかを演算子と呼ぶ事すら知りませんでした・・・
サイトまで載せて頂き丁寧な対応ありがとうございました^^

お礼日時:2005/01/09 21:14

%は割り算をして余りを求める演算子です。



> x=random()% 10000;

引いた乱数を10000で割った余りがxに入ります。
だからxは0から9999の範囲の数になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^
本当に助かりました、ありがとうございました

お礼日時:2005/01/09 21:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qc言語 random

c言語でrandom関数を使って乱数を生成してください

Aベストアンサー

完全な乱数はC言語では生成できませんので擬似乱数でよければこのあたり参照

http://www.media.osaka-cu.ac.jp/~k-abe/2001-JS-OSAKA-U/C.html

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

QC言語でサイコロのプログラムを作ってみたのですが

まず、以下のような”実行するたびに1~6の数字をランダムに出力するプログラム”を
作ってみたのですが、特定の数字が出てこないのです。
例えば、1と4、2と5、3と6 が出ない

ここで気がついた事は、

1、出ない目の2数の差は3であること。
2、乱数自体を表示させたところ、ちゃんと1秒毎に乱数は変わっている。こちらには問題はない
3、約1分間隔で、出ない数字の組み合わせが変わる。
(例えば 1,3,4,6,1,6,3,6,4(2と5が出ない)
 →1分間実行し続けると・・・  2,3,6,5,3,2,2,6(1と4が出ない))

この原因は一体なんなのでしょうか・・・
とても気になって仕方がありません。わかる方教えてください。

以下、ソースコードになります

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

int func(void);

int main(void){

int number=0;

number=func();

//サイコロの目の表示
printf("%d\n",number);

return 0;

}

int func(){

//乱数の初期化
srand((int unsigned)time(NULL));

//サイコロの目をランダムで出力し、返す

return rand()%6+1;
}


プログラムの仕組みは

パソコンから現在の歴時刻を元に乱数の初期値を変更

rand関数で適当な値を受け取り、6で割った余剰+1を計算し値を返却する

まず、以下のような”実行するたびに1~6の数字をランダムに出力するプログラム”を
作ってみたのですが、特定の数字が出てこないのです。
例えば、1と4、2と5、3と6 が出ない

ここで気がついた事は、

1、出ない目の2数の差は3であること。
2、乱数自体を表示させたところ、ちゃんと1秒毎に乱数は変わっている。こちらには問題はない
3、約1分間隔で、出ない数字の組み合わせが変わる。
(例えば 1,3,4,6,1,6,3,6,4(2と5が出ない)
 →1分間実行し続けると・・・  2,3...続きを読む

Aベストアンサー

randでは「疑似乱数」といって、実際には計算で次の「乱数」を求めています。
直前の(計算方法によっては複数の)「乱数」を覚えておいて、次の「乱数」を計算しています。
そして、最初の状態を求めるのに使う値が「種(シード)」と呼ばれるものです。種が同じなら、同じ乱数列になります
種を設定するのがsrandです。

例えば。
あるときsrand(1)でrand()=1,3,5,4 ... となったら
srand(1)とすれば、いつでも最初のrand()は1、次は3,次は5...となります。

さて、この疑似乱数は、その計算方法によってはあまり「乱数っぽくならない」ことがあります。

種が近い値の場合、乱数が近くなってしまうアルゴリズムもあります。

質の悪い乱数だと、一見バラバラに見えて、よくよく見ると、特定ビットに短い周期性が見られたりします。
6で割ったあまり、というのは上位ビットより下位ビットの影響が大きくなります。そして、「下位ビットに注目すると、全パターン出てこない」などということは有りえます。

おそらく、この複合で起こっているのでしょう。

・srandで初期化するのは、普通は最初の1回だけです。
・もっと上の位を使うようにする。例えば、rand()/(double)RAND_MAX*6.0と、全体を使うとか、 (rand () >> 4)%6 等と下位を捨てるとか
・rand自体があまり質のいい乱数ではないので、別のアルゴリズムを使う。

参考URL:http://www001.upp.so-net.ne.jp/isaku/rand.html

randでは「疑似乱数」といって、実際には計算で次の「乱数」を求めています。
直前の(計算方法によっては複数の)「乱数」を覚えておいて、次の「乱数」を計算しています。
そして、最初の状態を求めるのに使う値が「種(シード)」と呼ばれるものです。種が同じなら、同じ乱数列になります
種を設定するのがsrandです。

例えば。
あるときsrand(1)でrand()=1,3,5,4 ... となったら
srand(1)とすれば、いつでも最初のrand()は1、次は3,次は5...となります。

さて、この疑似乱数は、その計算方法によってはあまり「...続きを読む


人気Q&Aランキング