差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
programming:nim:random [2018/11/11] – [ランダム関数の種類] ikatakos | programming:nim:random [2018/11/11] (現在) – [random - Nimで乱数生成] ikatakos | ||
---|---|---|---|
行 1: | 行 1: | ||
======random - Nimで乱数生成====== | ======random - Nimで乱数生成====== | ||
- | Nimで乱数生成は、randomモジュールを使う。 | + | Nimで乱数生成は、'' |
+ | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | ただし、これは実行毎に同じ乱数列が生成される。 | + | =====mersennneモジュール===== |
+ | |||
+ | シンプルなメルセンヌツイスタ発生器。uint32型のみ。 | ||
+ | |||
+ | < | ||
+ | import mersenne | ||
+ | |||
+ | let mt = newMersenneTwister(1234) | ||
+ | for i in 1..5: | ||
+ | echo mt.getNum | ||
+ | |||
+ | # => | ||
+ | # 407788156 | ||
+ | # 1071751096 | ||
+ | # 3805347140 | ||
+ | # 2262621205 | ||
+ | # 828021025 | ||
+ | </ | ||
+ | |||
+ | =====randomモジュール===== | ||
+ | |||
+ | intやfloatなど汎用的に乱数を生成させる。ただ暗号強度としては弱いっぽい。 | ||
+ | |||
+ | AtCoderのver.0.13ではまだ使えない。 | ||
+ | |||
+ | 注意点として、シードを与えずとも使えるのだが、その場合は実行毎に同じ乱数列が生成される。 | ||
<sxh nim> | <sxh nim> | ||
import random | import random | ||
- | for i in 1..10: | + | for i in 1..5: |
echo rand(int.high) | echo rand(int.high) | ||
行 19: | 行 45: | ||
# 1113308261 | # 1113308261 | ||
# 2026589088 | # 2026589088 | ||
- | # 553166780 | ||
- | # 1281276772 | ||
- | # 1395580239 | ||
- | # 1817045090 | ||
- | # 65757242 | ||
</ | </ | ||
行 33: | 行 54: | ||
randomize() | randomize() | ||
- | for i in 1..10: | + | for i in 1..5: |
echo rand(int.high) | echo rand(int.high) | ||
行 42: | 行 63: | ||
# 69130349 | # 69130349 | ||
# 1606970134 | # 1606970134 | ||
- | # 719066767 | ||
- | # 1796926804 | ||
- | # 174841605 | ||
- | # 101251081 | ||
- | # 1353130501 | ||
</ | </ | ||
行 68: | 行 84: | ||
- | =====ver.0.13用===== | + | =====C言語から===== |
- | AtCoderのバージョンではrandomがまだ無くて使えないっぽい。ので、C言語から持ってくる。 | + | '' |
<sxh nim> | <sxh nim> |