java - 如何产生不重复的随机数

标签 java android

我用这段代码生成一个随机数:

int randomNumber = (int) (Math.random() * 7);

我想停止生成重复的号码,并且我想在我的应用再次打开后生成一个新号码。

我该怎么做?

最佳答案

将生成的数字存储在 Set 中。然后,每次生成新的随机数时,测试它是否已存在于此 Set 中。

Set<Integer> nums = new HashSet<Integer>();

// Initialize set on app boot

int rnum;
do {
  rnum = (int) (Math.random() * 7);
} while (!nums.contains(rnum));

// Update the set
nums.add(rnum);

// Use rnum now..

您还需要在应用关闭之前保留Set 值;在 onPause()onStop() 方法中。您可以使用 SharedPreferences 或简单地序列化/反序列化 Set。使用数据库将是一种矫枉过正。

关于java - 如何产生不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28567077/

相关文章:

java - 适用于 Android 的 SSH Java 库?

android - GestureDetector 不起作用(来自 android 开发人员的示例)

android - 使用bindview后如何获取 View 对象?

java - 使用Jsoup提取数据

java - 在 linux 中发出 kill 命令时优雅地停止嵌入式 jetty 服务器

java - 导入org.junit.jupiter无法解析

java - LWJGL 使用 slick-util 渲染文本

java - viewPager 不显示 fragment

java - Android内部存储: File is empty as soon as it has been read

android - 从 google play service api 调用个人资料图片 url 时出错