仕事を頑張る人のおしりトラブル対策

パソコン上で動作していたプログラムを
PICで動作させようと考えています。

発生させる乱数を毎回異なるものにしたいため、
パソコン用のプログラムでは
「srand((unsigned)time(NULL));」
と記載していました。

PICで同様の動作をさせるためには
どのようにすればよいのでしょうか?
当然ですが、上記の命令ではコンパイルできません。

よろしくお願いいたします。

A 回答 (2件)

srandというか、問題はtime関数ですよね。


プログラムを実行するごとに異なる結果を出すには、srandに与える引数を毎回変わるものにする必要があります。パソコンだとその手っ取り早い方法としてtime関数を使いますが……
PICってRTC(リアルタイムクロック)を内蔵しているのでしょうか。内蔵していないとtime関数はなくて、time.hも提供されていないのではないかと思います。
timeの代わりにsrandに毎回違う値を与える関数を作って与えるか、毎回同じ値になっても構わないと割り切って定数を与えるかですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

質問後も検索を続けた結果、解決に至りました。
randで発生させた乱数の一部をEEPROMに保存しておいて、
二度目以降に起動する際にはその数字を読み込んでsrandのseedにしたところ
一応、自分の思うような動作になりました。

timeに固執していて気が付きませんでした。

お礼日時:2019/10/30 23:40

PICについてはほとんど知りませんが


srandと同様のプログラムを作ればいいんじゃないでしょうか?
タイマー用レジスタ(?)の値を演算(四則演算とか)して乱数らしきものを発生させればいいんじゃないですか?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報