C#怎样获取真正的随机数

一人一世界 2018-11-09 11:05:54
现在的代码如下:

Random rand = new Random(DateTime.Now.Millisecond + ci);
ci = rand.Next(0, lstPic.Count);

结果在WINDOWS窗体下每次点开始和结束,顺序出来的随机数都是一样的:(
实在找不到原因了。
...全文
796 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
include_ice 2019-10-09
  • 打赏
  • 举报
回复
用计时器,越精确越好,CPU每一刻的工作状态都是不同的,导致每次执行函数时使用时间都是不同,可以用这个办法产生随机数.
xiaohe96 2018-12-20
  • 打赏
  • 举报
回复
rand 应该定义为 static,是全局的。Random 对象每一次枚举值,默认以上一次的值为“种子”;但是第一次创建对象时是以当前时钟的值为种子。
一人一世界 2018-11-09
  • 打赏
  • 举报
回复
完整代码:

private void Form1_Load(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 180;
timer.Elapsed += new ElapsedEventHandler(ServiceTimer_Tick);
}
private void ServiceTimer_Tick(object sender, EventArgs e)
        {
                ci = new Random(Guid.NewGuid().GetHashCode()).Next(0, 143);
                tmpstr += ci.ToString() + "|";
        }
一人一世界 2018-11-09
  • 打赏
  • 举报
回复

Random rand = new Random(Guid.NewGuid().GetHashCode());
 ci = rand.Next(0, 143);
改完后还是这样的结果: 130|131|41|114|90|40|111|49|14|85|95| ---------------------------------------- 130|131|41|114|90|40|111|49|14|85|95|55|47|125|21|10|124|4|50|68|126|97| ---------------------------------------- 130|131|41|114|90|40|111|49|14|85|95|55|47|125|21|10|124|4|50|68|126|97|46|82|6|129|109|79|51|71|24|114| ---------------------------------------- 130|131|41|114|90|40|111|49|14|85|95|55|47|125|21|10|124|4|50|68|126|97|46|82|6|129|109|79|51|71|24|114|129|70|50|91|92|53|12|131|22|140|53| ---------------------------------------- 130|131|41|114|90|40|111|49|14|85|95|55|47|125|21|10|124|4|50|68|126|97|46|82|6|129|109|79|51|71|24|114|129|70|50|91|92|53|12|131|22|140|53|82|120|109|84|13|12|91|123|83|86| ---------------------------------------- 130|131|41|114|90|40|111|49|14|85|95|55|47|125|21|10|124|4|50|68|126|97|46|82|6|129|109|79|51|71|24|114|129|70|50|91|92|53|12|131|22|140|53|82|120|109|84|13|12|91|123|83|86|130|129|74|44|84|121|121|132|29|67|73| ---------------------------------------- 130|131|41|114|90|40|111|49|14|85|95|55|47|125|21|10|124|4|50|68|126|97|46|82|6|129|109|79|51|71|24|114|129|70|50|91|92|53|12|131|22|140|53|82|120|109|84|13|12|91|123|83|86|130|129|74|44|84|121|121|132|29|67|73|109|136|131|83|104|23|27|4|50|141|97|
本人QQ-554433626 2018-11-09
  • 打赏
  • 举报
回复

Random rand = new Random(Guid.NewGuid().GetHashCode());
  • 打赏
  • 举报
回复
rand 应该定义为 static,是全局的。 Random 对象每一次枚举值,默认以上一次的值为“种子”;但是第一次创建对象时是以当前时钟的值为种子。
一人一世界 2018-11-09
  • 打赏
  • 举报
回复
70|102|66|93|56|61|103|79|18|20|110|23|116|123|90|139|66|130|34|35| ---------------------------------------- 70|102|66|93|56|61|103|79|18|20|110|23|116|123|90|139|66|130|34|35|133|76|65|18|65|86|65|85|23|19|36|2|120|53|69|103|93| ---------------------------------------- 这是两次开始和结束随机出来的数值(ci变量)。
一人一世界 2018-11-09
  • 打赏
  • 举报
回复
已经解决了。 tmpstr一直没有重置:(

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧