如何为String类型变量生成0-100范围内无重复的随机数字字符串?
实现0-100范围内无重复的随机数字字符串赋值给String变量
要生成0到100之间无重复的随机数字字符串,核心是记录已使用过的数字,确保每次生成的随机数未被使用过。以下是具体实现方案:
通用思路
- 用集合存储已生成的数字,利用集合的唯一性特性快速判断重复。
- 循环生成0-100的随机数,直到找到未被使用过的数字。
- 将该数字转换为字符串,赋值给目标变量。
Java 实现示例
import java.util.HashSet; import java.util.Random; // 全局集合记录已用数字,保证多次生成不重复 private static final HashSet<Integer> usedIds = new HashSet<>(); private static final Random random = new Random(); public static String getUniqueId() { int randomNum; // 循环直到生成未使用过的数字 do { randomNum = random.nextInt(101); // 生成0-100(包含)的随机整数 } while (!usedIds.add(randomNum)); // add返回false说明数字已存在,继续循环 return String.valueOf(randomNum); } // 使用示例 public static void main(String[] args) { String id = getUniqueId(); System.out.println(id); }
Dart 实现示例(匹配你提供的代码风格)
import 'dart:math'; final Set<int> usedIds = {}; final Random random = Random(); String generateUniqueId() { int randomNum; do { randomNum = random.nextInt(101); } while (!usedIds.add(randomNum)); return randomNum.toString(); } // 使用示例 void main() { String id = generateUniqueId(); print(id); }
关键说明
- 集合
usedIds需要保持生命周期一致性(比如全局变量或类成员变量),如果每次生成都重新创建集合,会失去去重效果。 - 如果只需要单次生成一个随机数字字符串(无需考虑重复),可以直接简化为:
String id = String.valueOf(new Random().nextInt(101));,但这无法保证多次生成不重复。
内容的提问来源于stack exchange,提问作者Verc
相关产品推荐
相关产品推荐

