首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

android - 生成随机数而不重复

在这个问答内容中,我们要求生成随机数而不重复,这是一个常见的编程问题。在 Android 开发中,可以使用以下方法来生成随机数而不重复:

  1. 使用 java.util.Random 类生成随机数:
代码语言:java
复制
import java.util.Random;

public class RandomNumberGenerator {
    public static void main(String[] args) {
        int[] numbers = new int[10];
        Random random = new Random();

        for (int i = 0; i< numbers.length; i++) {
            int randomNumber = random.nextInt(100);
            while (contains(numbers, randomNumber)) {
                randomNumber = random.nextInt(100);
            }
            numbers[i] = randomNumber;
        }

        for (int number : numbers) {
            System.out.println(number);
        }
    }

    public static boolean contains(int[] array, int value) {
        for (int i : array) {
            if (i == value) {
                return true;
            }
        }
        return false;
    }
}
  1. 使用 java.util.Set 类来存储已生成的随机数,直到集合中的元素数量达到预期的数量为止:
代码语言:java
复制
import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class RandomNumberGenerator {
    public static void main(String[] args) {
        int count = 10;
        Set<Integer> numbers = new HashSet<>();
        Random random = new Random();

        while (numbers.size()< count) {
            numbers.add(random.nextInt(100));
        }

        for (int number : numbers) {
            System.out.println(number);
        }
    }
}

这两种方法都可以生成不重复的随机数,具体使用哪种方法取决于您的需求和场景。在 Android 开发中,这两种方法都是非常常见的,可以满足大多数情况下的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# Random 生成重复随机数

默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,参数化构造函数可根据当前时间的计时周期数采用 Int32 值。...但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器。 通过创建单个不是多个 Random 对象可以避免此问题。...若要提高性能,请创建一个随时间推移能生成多个随机数的 Random 对象,不要反复新建会生成同一个随机数的 Random 对象。...用 C# 生成重复随机数 我们可以使用两种方式初始化一个随机数发生器: 第一种方法指定随机种子,系统自动选取当前时间作为随机种子: Random ro = new Random(); 第二种方法可以指定一个...,会出现重复,特别是在数量较小的题目中要生成重复的的题目是很难的。

1.5K20

C# Random 生成重复随机数

默认情况下,Random 类的无参数构造函数使用系统时钟生成其种子值,参数化构造函数可根据当前时间的计时周期数采用 Int32 值。...但是,因为时钟的分辨率有限,所以,如果使用无参数构造函数连续创建不同的 Random 对象,就会创建生成相同随机数序列的随机数生成器。 通过创建单个不是多个 Random 对象可以避免此问题。...若要提高性能,请创建一个随时间推移能生成多个随机数的 Random 对象,不要反复新建会生成同一个随机数的 Random 对象。...用 C# 生成重复随机数 我们可以使用两种方式初始化一个随机数发生器: 第一种方法指定随机种子,系统自动选取当前时间作为随机种子: Random ro = new Random(); 第二种方法可以指定一个...,会出现重复,特别是在数量较小的题目中要生成重复的的题目是很难的。

1.8K10

PHP CodeBase: 生成N个不重复随机数

但是我们这里讨论的是技术,就是需要生成1-25之间的16个不重复随机数,去填补。具体怎么设计函数呢?将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。 程序如下: <?...php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 *...> 程序运行如下: 2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24 补充几点说明: 生成随机数时用了 mt_rand() 函数。...这个函数生成随机数的平均速度要比 rand() 快四倍。 去除数组中的重复值时用了“翻翻法”,就是用 array_flip() 把数组的 key 和 value 交换两次。...如果不进行此步骤,可能在删除重复值时造成键名连续,给遍历带来麻烦。

1.4K50

【说站】java每次生成重复随机数

java每次生成重复随机数 本教程操作环境:windows7系统、java10版,DELL G3电脑。...1、方法说明 Math.random()返回值为[0.0,1.0)的double型数值,由于double型数的精度较高,可视为随机数,借助(int)进行类型转换,可获得整数随机数。...=100,min=1; int ran2 = (int) (Math.random()*(max-min)+min); System.out.println(ran2); } 有时候我们会需要一些随机生成的数字进行使用...,而这java种有着生成随机数字的方法。...本篇所带来的是Math.random()的方法,可以随机生成一些整数的随机数字。 以上就是java每次生成重复随机数的方法,大家可以先就方法的使用进行了解,然后再动手尝试代码的操作。

52540

用GUID生成随机数重复性基本为0)

随机数不管是前端还是后端都会用到的一个地方,不管是从验证码还是各种生成的状态码,基本都是随机生成的,还有就是一些抽奖的算法,也是用随机数来处理的,生成随机数的方法目前是很多的,但是其实很多是重复性很大的...,今天简单的讲一下怎么生成随机数重复性很低的一种办法GUID(Globally Unique Identifier)一种由算法生成的二进制长度为128位的数字标识符 不重复的原理:GUID 的总数达到了...2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。...用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。...BB上代码: GUID的js: function GUID() { this.date = new Date(); /* 判断是否初始化过,如果初始化过以下代码,则以下代码将不再执行

2.5K30

PHP生成指定范围内的N个不重复随机数

思路:将生成随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。 在PHP网站开发中,有时候我们需要生成指定范围内一定数量的不重复随机数,具体怎么设计这个生产随机数的函数呢?...我们可以将随机产生的数存入数组,但在存入的同时去除重复的值,即可生成一定数量的不重复随机数。...php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数,指定的范围内整数的数量必须 * 比要生成随机数数量大...这个函数生成随机数的平均速度要比 rand() 快几倍。 2、去除数组中的重复值时用了“翻转法”,就是用 array_flip() 把数组的 key 和 value 交换两次。...如果不进行此步骤,可能在删除重复值时造成键名连续,如果用for遍历的时候会有问题,但如果用foreach或不需要遍历的时候可以不需要shuffle。

2.5K31

ASP.NET (Web) + C#算法 | 生成随机数字序列(随机数字+每个数字取随机不重复的位置和颜色)

关于今天的一个关于ASP的课后作业,是要求在ASP上实现随机生成数字序列: 具体要求: 随机位置:每个数字的位置相对随机; 随机颜色:每个数字的颜色随机且不重复随机数字:从0到9随机取出四个数;...最大值大小 为长度的数组 for (int i = 0; i < maxValue; i++)//数组的内容:最小值+(从 0 到 最大值减一 ),及intList为一个特殊规律的不重复的递增数组...//不断用最后面的值来覆盖选中到的值,再把最后面的值去掉(通过n--实现,抽象意义上“截短”提供数字的intList),由此实现不重复序列 详细解析见以上的代码截图。...PointF(0, 300)); int[] rdlist = common.GetRandom(0,cr.Length,textString.Length);//产生一个随机的不重复

2.4K10

在指定的范围内,生成重复随机数序列(排除法,筛选法)

在指定的范围内,生成重复随机数序列(排除法,筛选法) import java.util.ArrayList; import java.util.List; import java.util.Random...; /** 在指定的范围内,生成重复随机数序列 */ public class UnrepeatRandomNumber { private int min; private int max;...将所有可能被生成的数字放到一个候选列表中。 然后生成随机数,作为下标,将候选列表中相应下标的数字放到放到结果列表中, 同时,把它在候选列表中删除。...outputArray(test.getRandomMethodA(8)); outputArray(test.getRandomMethodB(8)); // 相比之下,第一种方法利用Random对象生成随机数的次数比较多...// 第二种方法利用Random对象生成随机数的次数比较少,需要多少个,就生成多少个,保证了每次生成的数字都不重复。 // 也就是说第一种方法在时间花费上更多。

1.3K00

安卓应用安全指南 5.6.3 密码学 高级话题

为了防止这种情况,有必要以第三方难以猜测它们的值的方式,产生密钥和 IV,随机数在确保这一必要实现的方面,起着非常重要的作用。 产生随机数的设备称为随机数生成器。...在许多 Android 设备上,/dev/urandom或/dev/random可用,Android 提供的SecureRandom默认实现使用这些设备文件,来确定随机数生成器的种子。...伪随机数生成器的内部状态 伪随机数发生器的内部状态由种子初始化,然后在每次生成随机数时更新。...Android 4.2.x-4.3 .x),产生了一个漏洞,任何应用都可以轻松预测其他应用生成随机数。...从密码生成密钥时,密钥存储位置是用户内存,因此不存在由于恶意软件造成泄漏的危险。 但是,根据密码的强度,可能很容易重现密钥。

76310

Android编程实现随机生成颜色的方法示例

Random random = new Random(555L); 2) Random random = new Random(); random.setSeed(555L); 总的来说,Random可以生成一个指定范围以内的随机数...比如:要生成1000到100之间的随机数 random.nextInt(1000)+100; 注意这里是不包括1000的。...我测试过了,如果让random.nextInt(1)返回的永远都不会是1,都是0 二、直接使用Math.random()方法 通过Math.random()返回一个0到1之间的double值。...如果要生成1000到100之间的随机数,则 Math.random()*(1000-100)+100; 但是16进制的颜色值如何生成呢。...全0的,通过Long型转成的int型大小是-16777216; 全F的,通过Long型转成的int型大小是-1; 现在知道范围了,可以用Random或者Math生成一个范围在16777216到1之间的一个随机数

1.4K20
领券