首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用随机数制作半随机数组

用随机数制作半随机数组
EN

Stack Overflow用户
提问于 2014-08-31 09:22:35
回答 5查看 260关注 0票数 0

我一直在努力让这件事起作用。我希望将1和2添加到从1-7随机生成的数字中,并将其存储在数组中,例如:如果随机数生成器得到3,我希望数组存储3、4和5。

代码语言:javascript
复制
    byte[] locationGen = new byte[1];
    for(byte i = 0; i < locationGen.length; i++) {
        locationGen[i] = (byte)(Math.random()*7+1);
    }
    byte[] locations = new byte[3];
    locations = (locationGen, locationGen+1, LocationGen+2);

除了位置变量之外,一切都按预期工作,我不知道该怎么做。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-08-31 10:18:50

我不认为您有使用byte类型的真正动机,而且使用byte会使Java代码变得不必要的复杂。我建议以下解决办法:

代码语言:javascript
复制
int[] locations = new int[3];
for (int locationGen = (int)(Math.random()*7) + 1, i = 0; i < locations.length; i++)
  locations[i] = locationGen + i;

如果在某个时候确实需要byte,那么在最后一刻转换为它。

票数 0
EN

Stack Overflow用户

发布于 2014-08-31 09:33:56

您可以用{} (而不是() )来初始化数组。

您的初始循环没有意义,因为数组中只有一个位置。你可以这样做:

代码语言:javascript
复制
byte locationGen = (byte)(Math.random()*7+1);
byte[] locations = {locationGen, (byte)(locationGen+1), (byte)(locationGen+2)};

要注意的是:

  1. 在这两种情况下,我都将3从声明中删除。这是不必要的,如果您更改初始化,它将成为维护问题。
  2. 我修正了第三个条目的错误(您使用的是大写的LocationGen L- Java区分大小写)。
  3. 因为向int (12)添加byte的结果是int,所以需要进行回滚。
票数 1
EN

Stack Overflow用户

发布于 2014-08-31 09:35:21

我会这样做,除非您有正当理由创建一个位置字节数组来存储随机的locationGen字节:

代码语言:javascript
复制
byte locationGen = (byte) (Math.random()*7+1);

byte[] locations = new byte[]{locationGen,  (byte) (locationGen+1), 
(byte)(locationGen+2)};

在您发布的解决方案中,您得到了一个错误,因为在进行和之前没有访问locationGen数组位置(locationGen),这可能就是出现错误的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25590597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档