ジェネレータ

D

dharanidhar

Guest
#は<stdio.h>含まれて
#は<stdlib.h>の含まれて
)メイン(

int型はx =ランド()%25;
のprintf("%d"は、xが);


私は関数)午前使用してランドを(そして、それは常に16を与える出力をのニュースを私に。
理由を与えるニュースを私に。

)(1として私の知識ランドクロック生成確率システムの番号に基づいて。しかし、もしそれが生成する乱数である根拠は、何をiコントローラ負荷にマイクロ?

 
うーん。
libcのインを使用avrの1つの自分のアプリケーションは、この問題をそこにしているも。すべての、初めてのrand()の値は同じでしょう生成されます。しかし、次の値は異なっている。
そして、私はコードを参照してください:
静的unsigned long型の横= 1;

ATTRIBUTE_CLIB_SECTION
int型
ランド(ボイド)

戻りdo_rand(&横);


ATTRIBUTE_CLIB_SECTION
概要static int
do_rand(unsigned long型*のctxを)

の#ifdef USE_WEAK_SEEDING
/ *
*歴史の実装との互換性。
*ランダムシードのシーケンスが異なるかはあまり
*もあふれている。
* /
戻り値((* ctxを= *のctxを* 1103515245L 12345L)%
((長符号なし)RAND_MAXの 1));
#他/ *!USE_WEAK_SEEDINGの* /
/ *
*)は計算はx =(7 ^ 5 * x)のはMOD(2 ^ 31 - 1
* wihoutビットをオーバーフロー31:
*(2 ^ 31 - 1)= 127773 *(7 ^ 5) 2836
*ものから、"ランダム番号ジェネレータ:良い見つけているのは難しい"
*公園やミラー、ACMのコミュニケーション誌、vol。31日は。10、
* 1988年10月頁1195。
* /
ロングXやあ、見よ、;

はx = *のctxを。
/ *ことができません0で初期化さなので、値を使用して別の。* /
(もしx == 0)
はx = 123459876L;
ハイ=のx / 127773L;
見よ= ×%の127773L;
はx = 16807L *ロー- 2836L *こんにちは。
(もしx <0)
Xの = 0x7fffffffL;
戻り値((* ctxを= x)は%((長い符号なし)RAND_MAXの 1));
#endifを/ *!USE_WEAK_SEEDINGの* /


その後、時間を見ると、毎月第一、RAND()は値を初期化は1です。したがって、時間が最初に別の値を得ることができます。

私はそれを考える場合は、改善するためにこれを行うかもしれない:
でyourselftランド1.Write。ハハ、これは難しいかもしれません。
いくつかの値のランド拳2.Dropの()。いくつかの数は時間がすべての必要が異なる。

 
ていないランド(またはコントローラ)の仕事のためにマイクロ?

 

Welcome to EDABoard.com

Sponsor

Back
Top