Dart中如何生成50到100这类指定区间内的随机数
指定区间随机数实现方案
首先纠正一个认知偏差:random.nextInt(100) 实际生成的是 [0, 100) 区间的整数,也就是0到99,并不包含100,这个方法的返回值始终满足「大于等于0,小于传入的边界值」的左闭右开规则。
要生成带偏移的指定区间随机数,核心思路是先生成对应区间长度的从0开始的随机数,再加上区间最小值作为偏移量即可。
对应50~100区间的实现
根据你是否需要包含100这个端点,分两种写法:
- 场景1:需要包含50和100两个端点(可选值共51个:50、51……99、100)
Random random = new Random.secure(); // 区间长度为 100-50+1=51,生成[0,51)范围的数再加50偏移,最终落在[50,101)也就是50~100 int randomNumber = 50 + random.nextInt(51);
- 场景2:只需要包含50,不包含100(可选值共50个:50、51……99,和你原代码的边界逻辑一致)
Random random = new Random.secure(); // 区间长度为100-50=50,生成[0,50)范围的数再加50偏移,最终落在[50,100)也就是50~99 int randomNumber = 50 + random.nextInt(50);
补充:
new Random.secure()会生成加密安全的随机数生成器,适合令牌生成、抽奖等对随机性安全要求高的场景,普通无安全要求的业务场景使用普通Random实例即可。
内容的提问来源于stack exchange,提问作者mishalhaneef
相关产品推荐
相关产品推荐

