1
nkliwenjian 2013-03-19 22:55:19 +08:00
一眼看上去没有错。先问一下你把这个程序跑了多少次吧。按照概率论,出0的概率为1/10,但是这是在大范围的平均值,小范围的话100个里面出一个0也是有可能的。
|
2
Linxing OP @nkliwenjian 肯定有错..同样的代码在同学电脑上跑了两三次就会看到一个0...我至少运行了不下50次..一个0都没有看到。。
|
3
keakon 2013-03-19 23:52:43 +08:00
逻辑上没看出什么问题,但总觉得好蛋疼。
Java 的方法命名应用小写字母打头的驼峰式。 Check() 方法和 RandomNumber 类根本没关系,其实 static 方法都应该审视一下。 Generator() 方法里有个奇葩的 10,应该作为参数。获取随机整数应用 Random 类的 nextInt() 方法。 应该提供一个接口,生成一个随机数数组,而不是放在 main() 里来实现。当数组长度过长时,或许得用堆或集合来替代数组。 当然,最想吐槽的就是用 Python 实现只需一行代码就行了: random.sample(xrange(10), 4) |
4
Linxing OP @keakon 学习了,小弟新手,只是课堂的一个小作业.....从0到10当中随意生成是个不同的数...为什么不会生成0呢?
|
5
nkliwenjian 2013-03-20 00:46:51 +08:00
你都会说同样的代码别人机器没问题了。我没写java代码很久了,只能提点疑问,你自己去解决了。
1. 你跟你同学的java版本一样不? 2. java的随机数是不是要撒种子的? 代码看不出问题,理论上就是这两个区别。实在不行你就别乘10强转了呗,换个算法不结了,例如乘100取整在除10取余数。 |
6
teloon 2013-03-20 00:50:30 +08:00 1
问题出在Check函数,因为number在初始化时会自动用0填充,所以你把0都过滤了。把number中的元素初始化为-1就行了。
|
7
nkliwenjian 2013-03-20 00:58:42 +08:00
@teloon 受教了,好眼力啊。
|
8
AnyOfYou 2013-03-20 01:03:01 +08:00 1
你建立数组的时候,里面的元素都初始化为0了.所以当随机生成0的时候,一判断就认为数组中已经有了而返回.
|
9
Linxing OP @nkliwenjian 谢谢~
|
12
meteor 2013-03-20 16:46:05 +08:00
https://gist.github.com/meteormatt/5203118#file-randomnumber-java
v2ex上没有代码高亮的。建议放到GitHub或是GitCafe上。 代码本身不难,可能就这个方法带进来的参数有问题。 public static boolean Check(int n, int[] num) |