huoqingpo 发表于 2012-11-29 16:39:00

高手还真多·

sleep365 发表于 2012-12-2 12:56:49

回复 16# 3mile


这个简洁明了实用啊。

Qokelate 发表于 2012-12-3 19:52:42

话说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

netegg 发表于 2012-12-3 21:33:17

回复 19# Qokelate
这个确实是100内的但应该是平均的吧,没有随机的意思,每10个数内一个吧

Qokelate 发表于 2012-12-3 21:57:22

回复 20# netegg


    正如P版所说,本来就是伪随机,我个人认为无所谓了

fanxian 发表于 2012-12-3 22:37:06

学习了不少方法,不过看来真正的随机无法以很简单的几句代码实现

netegg 发表于 2012-12-3 22:43:26

本帖最后由 netegg 于 2012-12-4 02:25 编辑

回复 21# Qokelate
伪随机不错,但你这个已经是统计学上的平均分布了,和伪随机是两码事了。尽管在样本足够大的时候,随机确实会呈现统计学意义上的平均分布
另外,如楼主所描述的要求,即使是10个数的随机排列,一共有10!种排列方式,用这个计算的话只有10×10种排列方式
p版那个我没明白是什么意思,不过,估计是猜测楼主到底想要干什么,如果是的话,倒确实是。
不知道p版如果在绘制fractal图形的时候会不会采用同样的做法

sanmoking 发表于 2012-12-4 13:36:00

$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)

haijie1223 发表于 2012-12-5 15:40:23

每个人的思路都不太一样啊,我的思路是在一个数组中放入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:11:14

本帖最后由 netegg 于 2012-12-5 16:12 编辑

回复 25# haijie1223
没什么区别,不过把自然数先放到数组里罢了,和直接操作数字没区别
而且这样还是自然数序,本身就限制了

sbtddh 发表于 2012-12-14 10:25:25

这东西没有最好只有最合适
页: 1 [2]
查看完整版本: 从 1-100 中 随机抽取10个不重复 数字