这个简洁明了实用啊。 话说P版的话真是好精辟!!赞同P版
#include <Array.au3>
Local $iNum = 0
Local $aArray
For $a = 1 To 10
$iNum += 10
$aArray[$a - 1] = Random($iNum - 9, $iNum, 1)
Next
_ArrayDisplay($aArray)
Exit
回复 19# Qokelate
这个确实是100内的但应该是平均的吧,没有随机的意思,每10个数内一个吧 回复 20# netegg
正如P版所说,本来就是伪随机,我个人认为无所谓了 学习了不少方法,不过看来真正的随机无法以很简单的几句代码实现 本帖最后由 netegg 于 2012-12-4 02:25 编辑
回复 21# Qokelate
伪随机不错,但你这个已经是统计学上的平均分布了,和伪随机是两码事了。尽管在样本足够大的时候,随机确实会呈现统计学意义上的平均分布
另外,如楼主所描述的要求,即使是10个数的随机排列,一共有10!种排列方式,用这个计算的话只有10×10种排列方式
p版那个我没明白是什么意思,不过,估计是猜测楼主到底想要干什么,如果是的话,倒确实是。
不知道p版如果在绘制fractal图形的时候会不会采用同样的做法 $z = TimerInit()
$a = ""
For $i = 1 To 100
$a &= $i&"|"
Next
$b = ""
For $i =1 To 10
$c = StringSplit($a,"|")
$d = Random(1,101-$i,1)
$b &= $c[$d] & "|"
$c = StringReplace($a,$c[$d]&"|","")
Next
MsgBox(0,TimerDiff($z),$b)
每个人的思路都不太一样啊,我的思路是在一个数组中放入1-100这100个数,然后“随机”取出不放回的思路。
#include <array.au3>
Dim $num, $new, $n
For $i = 0 To 99
$num[$i] = $i + 1
Next
For $i = 0 To 9
$n = Random(0, UBound($num) - 1, 1)
$new[$i] = $num[$n]
_ArrayDelete($num, $n)
Next
_ArrayDisplay($new) 本帖最后由 netegg 于 2012-12-5 16:12 编辑
回复 25# haijie1223
没什么区别,不过把自然数先放到数组里罢了,和直接操作数字没区别
而且这样还是自然数序,本身就限制了 这东西没有最好只有最合适
页:
1
[2]