相关疑难解决方法(0)

使用JavaScript Array.sort()方法进行混洗是否正确?

我用他的JavaScript代码帮助了一个人,我的眼睛被一个看起来像这样的部分抓住了:

function randOrd(){
  return (Math.round(Math.random())-0.5);
}
coords.sort(randOrd);
alert(coords);
Run Code Online (Sandbox Code Playgroud)

我的第一个是:嘿,这不可能奏效!但后来我做了一些实验,发现它确实至少似乎提供了很好的随机结果.

然后我做了一些网络搜索,几乎在顶部发现了一篇文章,这段代码最简单地被复制.看起来像一个相当可敬的网站和作者......

但我的直觉告诉我,这一定是错的.特别是因为ECMA标准没有规定排序算法.我认为不同的排序算法会导致不同的非均匀混洗.一些排序算法甚至可能无限循环...

但你怎么看?

而另一个问题是......现在我将如何衡量这种改组技术的结果是多么随机?

更新:我做了一些测量并将结果发布在下面作为答案之一.

javascript sorting random shuffle

124
推荐指数
6
解决办法
5万
查看次数

Microsoft是否更改了随机默认种子?

今天,我在.NET Core中进行了一些测试,并且遇到了一些有趣的事情。

以前(〜.NET Framework 4)Random使用过Environment.TickCount,但现在我相信情况已经改变。

考虑以下代码:

while (true)
{
    Random random = new Random();
    Console.WriteLine(random.Next(0, 10000));
}
Run Code Online (Sandbox Code Playgroud)

在较早的.NET Framework版本中,new Random()空构造函数将使用Environment.TickCount,这将导致伪随机值的重复。

因此,您可以期待如下结果:

542
4211
5244
5244
5244
9501
9501
Run Code Online (Sandbox Code Playgroud)

以此类推。

在使用最新编译器的最新.NET Core版本上,我收到以下结果:

5332
220
3928
524
2973
2840
4965
5667
657
6434
3170
3046
7044
Run Code Online (Sandbox Code Playgroud)

绝对可以改善。

在旧版本中,其他表现出此问题的SO问题:

如何生成随机整数?

在C#中生成没有重复的随机数

非重复随机数

C#随机数生成器线程安全吗?


我的设置:.NET Core 2.2 /最新的C#编译器。


实际问题

所以我的问题是,PRNG是否真的得到了改善,或者他们只是将构造函数更改为使用其他默认种子,如果是,则它们用作种子是什么?密码术现在是否更安全(如果他们实际上改变了实现)?

c# random

6
推荐指数
1
解决办法
141
查看次数

如何填充每个索引中具有唯一编号的int数组?

我正在创建一个宾果游戏,我正在使用数组Random生成随机数,int但我的问题是有时在索引中再次使用一个数字.如何使索引中的数字唯一?

这是我的工作:

namespace Bingo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    Random randNum1 = new Random();

    int[] random1 = new int[5];
    int qwe = 0;
    int i = 0;

    private void button1_Click(object sender, EventArgs e)
    {
        Class1 class1 = new Class1();
        class1.checker(this);

        if (label1.Text == label2.Text || label3.Text == label4.Text) {

            label2.Text = randNum1.Next(1, 15).ToString();
            label4.Text = randNum1.Next(1, 15).ToString();
        }

        if (label5.Text == label1.Text || label5.Text == label2.Text) {

            label5.Text …
Run Code Online (Sandbox Code Playgroud)

c# arrays random if-statement

1
推荐指数
1
解决办法
1135
查看次数

标签 统计

random ×3

c# ×2

arrays ×1

if-statement ×1

javascript ×1

shuffle ×1

sorting ×1