随机生成不重复的几个数(Unity)

using System.Collections.Generic;
using UnityEngine; /// <summary>
/// 随机数管理类
/// </summary>
public class RandomHelper
{
/// <summary>
/// 生成指定位数的随机码(数字)
/// </summary>
/// <param name="length">生成数字的长度</param>
/// <param name="min"></param>
/// <param name="max"></param>
/// <returns></returns>
public static string GenerateRandomCode(int length, int min, int max)
{
var result = new System.Text.StringBuilder();
for (var i = 0; i < length; i++)
{
var random = new System.Random(System.Guid.NewGuid().GetHashCode());
result.Append(random.Next(min, max));
}
return result.ToString();
} /// <summary>
/// 生成指定个数的不重复随机数列表
/// </summary>
/// <param name="length">列表的长度[不得大于min和max之间随机数的总个数]</param>
/// <param name="min"></param>
/// <param name="max"></param>
/// <returns></returns>
public static List<int> GenerateRandomList(int length, int min, int max)
{
List<int> randomList = new List<int>();
if (length <= (max - min))
{
for (var i = 0; i < length; i++)
{
int random = Random.Range(min, max);
if (randomList.Contains(random))
{
i--;
continue;
}
else
{
randomList.Add(random);
}
}
}
return randomList;
} /// <summary>
/// 索引法随机
/// </summary>
/// <param name="minValue"></param>
/// <param name="maxValue"></param>
/// <returns></returns>
public static int[] GetIndexRandomNum(int minValue, int maxValue)
{
System.Random random = new System.Random();
int sum = Mathf.Abs(maxValue - minValue);//计算数组范围
int site = sum;//设置索引范围
int[] index = new int[sum];
int[] result = new int[sum];
int temp = 0; for (int i = minValue; i < maxValue; i++)
{
index[temp] = i;
temp++;
} for (int i = 0; i < sum; i++)
{
int id = random.Next(0, site - 1);
result[i] = index[id];
index[id] = index[site - 1];//因id随机到的数已经获取到了,用最后的一个数来替换它
site--;//缩小索引范围
}
return result;
}
}
随机生成不重复的几个数(Unity)的更多相关文章
- PHP随机生成不重复的8位卡号(数字)和卡密(字符串)
一.生成不重复的随机数字,可自定义长度(最多支持10位数) /** * 生成不重复的随机数字(不能超过10位数,否则while循环陷入死循环) * @param int $start 需要生成的数字开 ...
- JS随机生成不重复数据的代码分享
JS随机生成不重复数据. 代码如下: <script> // 定义存放生成随机数的数组 var array=new Array(); // 循环N次生成随机数 for(var i = 0 ...
- C#随机生成不重复邀请码&创建登录Token&转换人民币大小金额
/// <summary> /// 创建登陆Token /// </summary> /// <param name="length">< ...
- PHP随机生成指定时间段的指定个数时间
/** * 生成某个范围内的随机时间 * @param <type> $begintime 起始时间 格式为 Y-m-d H:i:s * @param <type> $endt ...
- 自制-随机生成不重复的数组 --算法,egret平台下的TS code
感觉这个算法经常会用到,前段时间写过一次,现在push出来.原理是有两个数组,一个数组存放随机数,然后从另一个数组提取相关的数,然后把另一个数组的大小-1,remove掉这个数,unity里也是这个原 ...
- 生成不重复随机数,int转 TCHAR 打印输出
在0~n 中 随机去除不重复的k个数 int k=100; int n=80000; for(int i=0;k>0&&i<n;i++) { if((bigrand()%( ...
- c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;
网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...
- 转:在0~N(不包括N)范围内随机生成一个长度为M(M <= N)且内容不重复的数组
1. 最朴素暴力的做法. void cal1() { , j = , num = ; int result[M]; result[] = rand() % N; //第一个肯定不重复, 直接加进去 ; ...
- 高级软件工程第二次作业:随机生成N个不重复的已解答完毕的数独棋盘
#include <stdio.h> #include "SuduCheck.h" ][],int i,int j,int k) //判断是否可以将第i行.第j列的数设 ...
- Java的ArrayList实现随机生成N-M之间N个不重复的随机数
在此之前我使用Java的数组实现了产生N-M之间的不重复的随机数,下面是使用数列ArrayList实现同样的功能,代码如下: /** * 随机生成 N--M,N个不重复随机数 使用ArrayList ...
随机推荐
- C语言标准 —— C89(C90)、C99、C11、C17、C2X
https://blog.csdn.net/u010217055/article/details/128957497
- swift中的进制转换,以及玩转二进制
swift中的进制转换,以及玩转二进制 在日常开发中我们很少用到进制转换,或操作二进制的情况.但是如果你处理一些底层的代码,你会经常与二进制打交道,所以接下来我们先来了解一下二进制. 二进制(bina ...
- docker安装postgres并启用postgis扩展
镜像 查看所有镜像 docker images 可以直接拉取postgis镜像 docker pull postgis 也可以在已有镜像上安装postgres,再启用扩展: docker pull p ...
- 基于Mybatis Plus的一种查询条件构建方案
! 重要: 遐(瞎)想的思路, 希望各位多多建议 record为jdk17写法, 使用class也不会有问题 背景 身为资深程序员, 上班最重要的事当然是增删改查(bushi). 比如今天, 组长甩给 ...
- uniapp获取位置
uni.getLocation({ type: 'gcj02', geocode: true, success: (res) => { uni.showModal({ title:JSON.st ...
- 力扣51. N 皇后(回溯法)
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子. n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回 ...
- SpringBoot整合MyBatis-Plus详细使用方法
SpringBoot整合mp 一.添加依赖pom.xml <dependency> <groupId>mysql</groupId> <artifactId& ...
- python exec_command 命令无效的原因
当使用Python Paramiko exec_command执行时,某些Unix命令失败并显示"未找到"_互联网集市 (qyyshop.com) 链接里的解释解决了问题 本来直接 ...
- Linux 系统镜像分类和包管理工具
查看系统版本 cat /proc/version 可以看到如下返回,Linux是RedHat系统 Linux version 4.18.0-372.9.1.el8.x86_64 (mockbuild@ ...
- noi 45 金币
noi 45 金币 1.描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第二天和第三天)里,每天收到两枚金币:之后三天(第四.五.六天)里,每天收到三枚金币:之后四天( ...