首页
学习
活动
专区
工具
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.9K10

    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每次生成不重复随机数的方法,大家可以先就方法的使用进行了解,然后再动手尝试代码的操作。

    57440

    用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.7K30

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

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

    2.5K10

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

    在指定的范围内,生成不重复的随机数序列(排除法,筛选法) 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.4K00

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

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

    81310

    即时通讯安全篇(一):正确地理解和使用Android端加密算法

    6、常用算法之:随机数生成器在Android加密算法中需要随机数时要使用SecureRandom来获取随机数。 如:注意不要给SecureRandom设置种子。...如:11、加密算法PBEPBE是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。...开发者建议:使用基于口令的加密算法PBE时,生成密钥时要加盐,盐的取值最好来自SecureRandom,并指定迭代次数。...- 2、对称加密算法不要使用ECB模式,不建议使用DES算法。- 3、要选择合适长度的密钥。- 4、要确保随机数生成器的种子具有足够的信息熵。...- 7、当给算法加yan盐取值时不要太短,不要重复。

    10310

    《C++中的随机数生成器:探索随机之美》

    这使得我们可以在需要重复实验或测试时,通过固定种子来获得可重复的随机数序列。...可重复性 在某些情况下,需要能够重复生成相同的随机数序列,以便进行调试和测试。一些随机数生成器可以通过设置种子来实现可重复性,而另一些随机数生成器可能不支持这种功能。...在选择随机数生成器时,需要考虑其是否支持可重复性。 4. 库的可用性和兼容性 不同的随机数生成器可能来自不同的库,需要考虑库的可用性和兼容性。...一些库可能需要额外的安装和配置,而另一些库可能与特定的编译器或操作系统不兼容。在选择随机数生成器时,需要考虑库的可用性和兼容性,以确保能够在项目中顺利使用。...在选择随机数生成器时,需要根据具体的应用需求考虑随机性、质量、性能、可重复性和库的可用性等因素。通过合理选择和使用随机数生成器,可以为 C++程序增添更多的随机性和趣味性,同时满足各种应用场景的需求。

    12310
    领券