C# wpf 生成整数随机数

小弟本想随机生成椭圆elli,使它在Canvas中的坐标为2的倍数.

 Canvas.SetLeft(elli, Math.Round((double)random.Next((int)canvas.Width / 2)) * 2);
 Canvas.SetTop(elli, Math.Round((double)random.Next((int)canvas.Height / 2)) * 2);

然后判断elli的坐标与另一个坐标是否相等,但结果总为false.后来检查发现elli的坐标竟为{x=20, y=39.999994}之类的值.请问有什么办法产生完美的随机整数呢?

4个回答

问题找到了:
random本来已经产生了一个整数,但把它赋给Canvas.Left这个double类型的属性时产生了微小的不可避免的误差.
可以在判断相等时使用ToString方法忽略误差,或改用<= >=在误差允许范围内判断是否相等.

(int)(random.Next() * canvas.Width / 2.0 + 0.5)

坐标不是int的吗?

(int)Math.Round((double)random.Next((int)canvas.Width / 2)) * 2

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!