在C#中随机化通用列表顺序的最佳方法是什么?我在一个列表中有一组有限的75个数字,我想为其分配一个随机顺序,以便为抽奖类型的应用程序绘制它们.
我需要以最有效的方式随机"排序"整数列表(0-1999).有任何想法吗?
目前,我正在做这样的事情:
bool[] bIndexSet = new bool[iItemCount];
for (int iCurIndex = 0; iCurIndex < iItemCount; iCurIndex++)
{
int iSwapIndex = random.Next(iItemCount);
if (!bIndexSet[iSwapIndex] && iSwapIndex != iCurIndex)
{
int iTemp = values[iSwapIndex];
values[iSwapIndex] = values[iCurIndex];
values[iCurIndex] = values[iSwapIndex];
bIndexSet[iCurIndex] = true;
bIndexSet[iSwapIndex] = true;
}
}
Run Code Online (Sandbox Code Playgroud) 我是F#的新手,我正在试图弄清楚如何从列表/字符串数组中返回一个随机字符串值.
我有一个这样的列表:
["win8FF40", "win10Chrome45", "win7IE11"]
Run Code Online (Sandbox Code Playgroud)
如何从上面的列表中随机选择并返回一个项目?
这是我的第一次尝试:
let combos = ["win8FF40";"win10Chrome45";"win7IE11"]
let getrandomitem () =
let rnd = System.Random()
fun (combos : string[]) -> combos.[rnd.Next(combos.Length)]
Run Code Online (Sandbox Code Playgroud) 希望改变四个变量(试图改变它们在多选列表中出现的顺序).
我一直在探索一段时间,但我不能完全了解逻辑,在过去的问题中查找随机随机播放提供了超出我新手技能的超详细算法(以及此程序的需求我'我试着写,我只想制作一个多选图像选择器.
理想情况下,我喜欢这个伪代码之后的东西:
// int Answer1 = Random(min1 max4)
// int Answer2 = Random(min1 max4)
// int Answer3 = Random(min1 max4)
// int Answer4 = Random(min1 max4)
// If Answer 1 equals ANY of the other three, re-randomize Answer1 and loop.
// Loop through this cycle for all answers.
Run Code Online (Sandbox Code Playgroud)
我发布了我当前的常规代码,但坦率地说,这是垃圾.:(这似乎是一个简单的问题,但我只是不能正确.
提前致谢!
我有一个像这样的数组:
int[] numbers = new [] { 1, 2, 3, 4 };
Run Code Online (Sandbox Code Playgroud)
我想随机化这个(每次都不同),这样它就会生成另一个具有相同大小和数字但每次都以不同顺序排列的数组.
我很困惑如何将 9 个随机数添加到用户可能输入的任何数字上。假设用户输入“200”作为数字,我该如何制作才能得到 9 个随机数加起来正好等于 200?
显然,下面的代码无法按照我想要的方式工作,因为它实际上只是 9 个随机数,加起来不等于特定数字。我只是不知道如何正确构建它。
public static void RandomStats()
{
Random RandomClass = new Random();
int[] intRandomStats = {
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101),
RandomClass.Next(0, 101)
};
// ...
}
Run Code Online (Sandbox Code Playgroud) 给定从0开始的n个连续数的整数数组,即
0,1,2,..n
Run Code Online (Sandbox Code Playgroud)
我希望随机生成一个数字的排列,
说给定
0,1,2,3
Run Code Online (Sandbox Code Playgroud)
一个可能的是 3,1,2,0
如何轻松实现?
我想出的是:
RandomSort()
{
string[] list = { "Alpha", "Beta", "Gamma", ... }
Random rnd = new Random();
string[] list2 = list.OrderBy((x) => rnd.NextDouble()).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方式,也许使用一个Dictionary或什么?谢谢.
对于我的计算机科学入门课程,我必须创建一个应用程序来选择具有各种功能的餐馆,我无法弄清楚如何随机化数组.以下是我的代码.
string[] myRestaurants = new string[9];
myRestaurants[0] = "Wendy's";
myRestaurants[1] = "Arby's";
myRestaurants[2] = "Olive Garden";
myRestaurants[3] = "The Pie";
myRestaurants[4] = "The Cheesecake Factory";
myRestaurants[5] = "Beto's";
myRestaurants[6] = "Dillinger's Saloon";
myRestaurants[7] = "Dayz Alpher";
myRestaurants[8] = "Firehouse subs";
var nextArray = myRestaurants.ToList();
Random rng = new Random();
int n = nextArray.Count;
while (n > 1)
{
n--;
int k = rng.Next(n + 1);
T value = nextArray[k];
nextArray[k] = nextArray[n];
nextArray[n] = value;
//bang
}
Run Code Online (Sandbox Code Playgroud) 我面临着将char置于随机位置的问题.
我有一个装满点的桌子,我必须用这些点替换30%的点 *
尺寸:10x5
我用过功能Random.
Random rnd = new Random();
if (rnd.Next() % 10 > 3)
Console.Write(". ");
else
Console.Write("* ");
Run Code Online (Sandbox Code Playgroud)
一切都在2个循环中,其中包含表格的长度和高度(10x5).
但它只能制造30%的概率*而不是.
这需要很好的位置,但每次我开始一个程序有不同的数量*.
*每次启动程序时,它应该只有16个(17 - 如果舍入)
我怎么想总是把30%变成概率呢?
我遇到一些看起来很简单的问题.我正在使用条件和预测试循环虽然它似乎甚至没有执行一个,因为满足条件,但它们不是.
我有,但我似乎永远不会遇到/当我打破它.它只是跳过它
int sorter = random.Next(0, 10);
bool player1full = false;
bool player2full = false;
while (player1full && player2full == false)
{
if (chuckcards[sorter] != null)
{
while (player1full != true)
{
if (player1.Count != 5)
{
player1.Enqueue(chuckcards[sorter]);
chuckcards[sorter] = null;
}
else
{
player1full = true;
}
sorter = random.Next(0, 10);
}
while (player2full != true)
{
if (chuckcards[sorter] != null)
{
if (player2.Count != 5)
{
player2.Enqueue(chuckcards[sorter]);
chuckcards[sorter] = null;
}
else
{
player2full = true;
}
sorter …Run Code Online (Sandbox Code Playgroud) 下面的片段随机数和每次执行中更改数字序列:
Enumerable.Range(1, 1000).OrderBy(r => Guid.NewGuid()).ToList();
Run Code Online (Sandbox Code Playgroud)
但是我想要随机数字并在每次执行应用程序时生成相同的数字序列?