C# 众所周知,这就是如何做到这一点。我想引用史蒂夫·乔布斯的话,他在这里引用了iPod上的一句话,说人们倾向于减少来自同一作者的两首歌曲的可能性,因为有人认为它不够随机:“这实际上不太随机”。注意,对于列表的许多实现,从中间删除一个元素是O(n)在列表的大小中
C# 众所周知,这就是如何做到这一点。我想引用史蒂夫·乔布斯的话,他在这里引用了iPod上的一句话,说人们倾向于减少来自同一作者的两首歌曲的可能性,因为有人认为它不够随机:“这实际上不太随机”。注意,对于列表的许多实现,从中间删除一个元素是O(n)在列表的大小中,c#,.net,asp.net,sql,sql-server,C#,.net,Asp.net,Sql,Sql Server,众所周知,这就是如何做到这一点。我想引用史蒂夫·乔布斯的话,他在这里引用了iPod上的一句话,说人们倾向于减少来自同一作者的两首歌曲的可能性,因为有人认为它不够随机:“这实际上不太随机”。注意,对于列表的许多实现,从中间删除一个元素是O(n)在列表的大小中。这将使您的算法O(n^2)变得不可行,因为我们已经知道范围将达到一百万左右。请注意,您可以发现Fisher-Yates shuffle算法在各地的实现都不正确。我编辑过不止一本“自学C#”的书,它们的实现不正确。不要盲目地相信它;亲自阅读,确
众所周知,这就是如何做到这一点。我想引用史蒂夫·乔布斯的话,他在这里引用了iPod上的一句话,说人们倾向于减少来自同一作者的两首歌曲的可能性,因为有人认为它不够随机:“这实际上不太随机”。注意,对于列表的许多实现,从中间删除一个元素是O(n)在列表的大小中。这将使您的算法O(n^2)变得不可行,因为我们已经知道范围将达到一百万左右。请注意,您可以发现Fisher-Yates shuffle算法在各地的实现都不正确。我编辑过不止一本“自学C#”的书,它们的实现不正确。不要盲目地相信它;亲自阅读,确保它实际上实现了真正的算法。“完全洗牌”并不意味着两个数字不能是连续的。创建唯一数字的随机列表的一种可能性是,它们都是按顺序排列的。你能举个例子吗?
Random rnd1 = new Random();
List<int> largeList = new List<int>();
for (int i = 0, i < largeNumber, i++)
{
largeList.Add(rnd1.Next(1, 1000001);
}
var fisherYates = new List<int>(upperBound);
for (int i = 0; i < upperBound; i++)
{
fisherYates.Add(i);
}
int n = upperBound;
while (n > 1)
{
n--;
int k = rnd.Next(n + 1);
int temp = fisherYates[k];
fisherYates[k] = fisherYates[n];
fisherYates[n] = temp;
}
DECLARE @intFrom int
DECLARE @intTo int
DECLARE @tblList table (_id uniqueidentifier, _number int)
SET @intFrom = 0
SET @intTo = 1000000
WHILE (@intFrom < @intTo)
BEGIN
INSERT INTO @tblList
SELECT NewID(), @intFrom
SET @intFrom = @intFrom + 1
END
SELECT *
FROM @tblList
ORDER BY _id
public IEnumerable<int> GetRandomSequence(int max)
{
var r = new Random();
while (true)
{
yield return r.GetNext(max);
}
}
var numbers = GetRandomSequence(9999999).Take(1000000);
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
shuffled_nums = []
for i in range(0, len(nums)):
random_index = rand(0,len(nums))
shuffled_nums.add(nums[random_index])
del(nums[random_index])