| 楼主 jackeroo | 
 上述代码在A1中输入,并下拉到第50行,按F9刷新测试。 | 
| 2楼 jackeroo | A1中输入公式: 
 请大家讨论! | 
| 3楼 xpm130 | 如此生成的数据大小层次太明显了,我以为这不是严格意义上的随机数. | 
| 4楼 habf2008 | O(∩_∩)O~的确是这样 我以为最简单的方法 A列用RAND取随机数;B列用RANK得出随机数。 | 
| 5楼 春雷 | 好帖,吸收了! | 
| 6楼 apolloh | 有想法,但这个公式不能获取真正意义的随机值,因为运算结果数字的间隔都不超过3,而随机值不会有这个规律。 | 
| 7楼 jackeroo | 数字间隔可以改大的,比如把2改成3或更大,或者把2用公式代替是。 因为不用辅助列,也不用循环引用,也不用VBA,而且从A1开始,到现在没有别的好办法。 | 
| 8楼 apolloh | 如果2用随机值代替则以难保不重复。随机值不应该是按从小到达顺序排列的,这么排列就说明已经受到一定条件限制。 | 
| 9楼 nocrying | 呵呵,看题目偶就疑惑,随机值为什么会按升序排列   | 
| 10楼 jackeroo | 原理是分隔成不相容的数据段,就算换成10000,也不会重复。 | 
| 11楼 jackeroo | 我觉得还是理解清楚了公式再下结论为好。 | 
| 12楼 apolloh | 举个例子: 100以内随机取5个数: =INT(2*(RAND()+ROW(A5))-1) 公式返回的最大数是:=INT(2*(1+5)-1)=11 也就是说数字之会在1-11内变化,而且有相对固定的间隔区间(1-2),要使5个数中出现12以上的数字是不可能的。而真正的随机数不会这样的,是任意的。 | 
| 13楼 nocrying | “=INT(2*(RAND()+ROW(A1))-1)”分成不相容的数据段的结果就是1和2不能共存,3和4不能共存...... rand()的作用充其量只是控制加0或者1~~ | 
| 14楼 jackeroo | 是的。所以就想这个办法来生成随机数啊。 随机数也有广义和狭义之分啊。呵呵。 可以把2换成大的数值的啊,呵呵。 那不用辅助列,不用VBA,不用循环引用,从A1开始生成随机数怎么做啊? |