[Unity] Unity3d c# 生成真正随机数

查看:2830 |回复:11 | 2016-11-12 23:28:55

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 醉酒風 于 2019-4-28 22:22 编辑

45.jpg

虽然可以用Random类来生成随机数,但它以系统时钟为种子,所以产生的是有大量重复的伪随机数。

可以用RNGCryptoServiceProvider();产生相对真的随机数,

由加密服务提供程序(CSP)的随机数发生器(RNG)产生

具体实现如下

  1. byte[] randomBytes = new byte[4];

  2.   RNGCryptoServiceProvider rngCrypto =

  3.   new RNGCryptoServiceProvider();

  4.   rngCrypto.GetBytes(randomBytes);

  5.   int rngNum = BitConverter.ToInt32(randomBytes, 0);//此为随机数
点击此处复制文本
产生的是这样有正有负的几位数(貌似九位及以上)

  如果想要0-100范围的随机数

  1. rngNum = rngNum % 100;
点击此处复制文本
取余即可。

  使用要加上这两个命名空间
  1. using System.Security.Cryptography;

  2. using System;
点击此处复制文本
另外,虽然这种方法产生的随机数比较乱,但是计算会造成很大开销,需要注意。

评分

参与人数 1元素币 +10 活跃度 +20 展开 理由
醉酒風 + 10 + 20 【感谢】楼主分享的内容!很棒!

查看全部评分

2016-11-12 23:28:55  
 赞 赞 0

使用道具 登录

11个回答,把该问题分享到群,邀请大神一起回答。
2#
{:1_144:}
回复 收起回复
2016-11-17 15:12:41   回复
 赞 赞 0

使用道具 登录

3#
涨姿势了!
回复 收起回复
2016-11-21 15:31:39   回复
 赞 赞 0

使用道具 登录

4#
6666
回复 收起回复
2016-12-15 11:26:54   回复
 赞 赞 0

使用道具 登录

5#
66666666666
回复 收起回复
2016-12-17 11:20:01   回复
 赞 赞 0

使用道具 登录

6#
666666
回复 收起回复
2016-12-17 16:41:25   回复
 赞 赞 0

使用道具 登录

7#
{:1_152:}
回复 收起回复
2017-1-11 02:35:40   回复
 赞 赞 0

使用道具 登录

8#
资源发布哪家强?元素首发称大王!
回复 收起回复
2017-1-11 08:32:57   回复
 赞 赞 0

使用道具 登录

9#
成真正随机数
回复 收起回复
2017-3-12 13:40:58   回复
 赞 赞 0

使用道具 登录

10#
学习了
回复 收起回复
2018-2-26 17:29:04   回复
 赞 赞 0

使用道具 登录

11#
666
回复 收起回复
2018-3-1 09:45:22   回复
 赞 赞 0

使用道具 登录

12#
66666
回复 收起回复
2019-3-29 14:32:26   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

Unity3D技术手机游戏引擎手游引擎
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表