#!/bin/bash
# 想要產生 1..500之間的亂數
n=500
echo $n
# 執行隨機亂數 500 x 100 = 50000 回合
for ((i=1; i<=50000; i++))
do
# 顯示是第幾回合
echo $i
# 方法1
RANDOM=`date +%s`
echo $(( RANDOM % n + 1 )) >> 1.list
# 方法2
RANDOM=$$
echo $(( RANDOM % n + 1 )) >> 2.list
# 方法3
# 目前相對好的bash隨機亂數方法, 隨機結果相對比較平衡
echo $(( $(od -An -N3 -i /dev/random) % n + 1)) >> 3.list
done
----------
以R來檢驗亂數產生結果
方法1產生結果:
> d1<-read.table('1.list', header = F)
> d1=as.martix(d1)
> summary(d1)
V1
Min. : 1.0
1st Qu.:136.0
Median :256.0
Mean :234.9
3rd Qu.:316.0
Max. :500.0
> hist(d1)
方法2產生結果:
> summary(d2)
V1
Min. : 0.0
1st Qu.:263.0
Median :263.0
Mean :258.7
3rd Qu.:321.0
Max. :472.0
> hist(d2)
> summary(d3)
V1
Min. : 0
1st Qu.:125
Median :250
Mean :250
3rd Qu.:375
Max. :500
> hist(d3)
ps. 其實上述範例產生出來的亂數範圍有點小錯 XD
沒有留言:
張貼留言