使用.NET随机化字符串数组的最佳方法是什么?我的数组包含大约500个字符串,我想Array用随机顺序创建一个具有相同字符串的新字符串.
请在答案中加入C#示例.
如何更改以下代码,每次从数据库中获取50个不同的随机数据?
return (from examQ in idb.Exam_Question_Int_Tbl
where examQ.Exam_Tbl_ID==exam_id
select examQ).OrderBy(x=>x.Exam_Tbl_ID).Take(50);
Run Code Online (Sandbox Code Playgroud) 使用VS2010构建时,以下C#代码似乎比使用VS2008 运行速度慢:在Core i5 Win7 x64 8 GB RAM PC上,VS2008内置版本在大约7.5秒内对字符串进行排序,而VS2010内置版本需要大约9秒.这是为什么?
我的代码有什么问题吗?
排序算法是否在VS2010中发生了变化?
底层CLR中有什么不同会使性能变差吗?
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
namespace StringSortCSharp
{
/// <summary>
/// Console app to test string sorting performance in C#.
/// </summary>
class Program
{
/// <summary>
/// Displays the first lines from a vector of strings.
/// </summary>
/// <param name="wishedN">Number of lines to display.</param>
/// <param name="lines">Source lines to display.</param>
private static void DisplayFirst(int wishedN, List<string> lines)
{
int …Run Code Online (Sandbox Code Playgroud) 我正在寻找网络上的每个地方(飞镖网站,stackoverflow,论坛等),我找不到我的答案.
所以有我的问题:我需要编写一个函数,打印随机排序的列表,女巫作为参数提供.:在飞镖中也是如此.
我尝试使用地图,使用集合,使用列表...我尝试使用assert的方法,使用排序,我看看随机方法使用数学上的飞镖解决方案......没有什么可以做我想做的事情.
有人可以帮我弄这个吗?
这里有一些草案:
var element03 = query('#exercice03');
var uneliste03 = {'01':'Jean', '02':'Maximilien', '03':'Brigitte', '04':'Sonia', '05':'Jean-Pierre', '06':'Sandra'};
var alluneliste03 = new Map.from(uneliste03);
assert(uneliste03 != alluneliste03);
print(alluneliste03);
var ingredients = new Set();
ingredients.addAll(['Jean', 'Maximilien', 'Brigitte', 'Sonia', 'Jean-Pierre', 'Sandra']);
var alluneliste03 = new Map.from(ingredients);
assert(ingredients != alluneliste03);
//assert(ingredients.length == 4);
print(ingredients);
var fruits = <String>['bananas', 'apples', 'oranges'];
fruits.sort();
print(fruits);
Run Code Online (Sandbox Code Playgroud) 我想在某个diapason中生成随机数,我必须确定,每个新数字都不是前者的副本.一种解决方案是将以前生成的数字存储在容器中,并且每个新数字都检查容器.如果容器中有这样的数字,那么我们生成agin,否则我们使用并将其添加到容器中.但是对于每个新的数字,这个操作变得越来越慢.有没有更好的方法,或任何可以更快地工作并确保代的唯一性的兰特函数?
编辑:是的,有一个限制(例如从0到1.000.000.000).但我想生成100.000个唯一数字!(如果解决方案是使用Qt功能,将会很棒.)
我需要根据历史数据随时间均匀分布一组数据,以使每个数字在每个位置随时间呈现相等(或接近相等)的次数.问题是,给定过去使用的排序列表,看起来像这样(但可以有任意数量的元素):
1,2,5,3,4
4,1,5,2,3
1,3,5,2,4
4,1,2,3,5
2,4,1,3,5
5,1,4,3,2
1,5,3,2,4
5,1,3,2,4
3,2,5,4,1
4,3,1,5,2
Run Code Online (Sandbox Code Playgroud)
如何找到最少使用的值的排序,并将导致"更平衡"的排序组.显而易见的答案是我可以分组并计算它们并选择最少使用的一个,但问题是可能从未使用过的最少使用的排列,例如这里,排序"1,2,3,4,5"是最少使用的候选人,因为它根本没有出现.
简单的答案似乎是确定哪个位置"1"出现在最不频繁的位置,并将该位置设置为"1",依此类推每个数字.我怀疑这是有效的,但我觉得有一个更优雅的解决方案,我没有考虑过可能有交叉连接,所以包括所有可能的组合.
有任何想法吗?
最近关于使用C#随机排序的这个问题让我想到了我有时在Perl中改组数组的方式.
@shuffled = sort { rand() <=> rand() } @array;
Run Code Online (Sandbox Code Playgroud)
在上述问题中提出的解决方案是Fisher-Yates shuffle,它在线性时间内工作.
问题是:我的代码片段效率如何,并且是如此随机"真正"随机?
我有一个像这样的数组:
int[] numbers = new [] { 1, 2, 3, 4 };
Run Code Online (Sandbox Code Playgroud)
我想随机化这个(每次都不同),这样它就会生成另一个具有相同大小和数字但每次都以不同顺序排列的数组.