首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将随机数插入数组Java

将随机数插入数组Java
EN

Stack Overflow用户
提问于 2018-10-19 08:27:31
回答 1查看 150关注 0票数 2

我必须使用开放寻址将900个随机整数散列到一个空表中,该表的集合大小为1009。为了确定该数字在表格中的位置,我采用随机数mod 1009,如果该数字是开放的,则将该数字放在那里。如果没有,我应该检查后面的下一个键,然后一个接一个地检查,直到我找到一个打开的键来放置随机数。到目前为止,我拥有的代码是:

代码语言:javascript
复制
import java.util.*;

public class openAdd{
public static void main(String[] args) {
    //set table length
    int[] table = new int[1009];

    //insert 900 random integers into the table using open addressing
    //random number % table size = the key the number should be placed
    //if the key is already taken go to the next key until you find an open one
    Random randomGenerator = new Random();

    for (int i = 0; i < 900; i++) {
        int num = randomGenerator.nextInt(99999);
        int key = num % 1009;
        if (table[key] == 0) {
            table[key] = num;
        }
    }
}

}

我认为到目前为止我所拥有的是好的,我只是困惑于如何将密钥设置为key +1,如果在原始key中已经有一些东西的话。谢谢你的帮助,如果我需要添加任何东西,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-19 08:46:15

你似乎有正确的想法,只是没有正确的实现。如果table[key]不为零,则需要递增key,直到在table中找到table[key]为零的索引。您可以使用Java的余数运算符(就像您已经使用的那样)来防止key超出数组的界限:

代码语言:javascript
复制
int key = num % 1009;

if (table[key] == 0) {
    table[key] = num;
} else {
    while (table[key = (key + 1) % table.length] != 0);
    table[key] = num;
}

因为table.length大于您设置的元素数量,所以不需要检查数组是否已满。此外,请记住,num可以是0

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

https://stackoverflow.com/questions/52884309

复制
相关文章

相似问题

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