Tag: 生成器

用于C#的快速线程安全随机数发生器

我需要在多个正在运行的线程中快速生成随机浮点数。 我尝试过使用System.Random ,但它对我的需求来说太慢了,它在多个线程中返回相同的数字。 (当我在一个线程中运行我的应用程序时,它工作正常。)另外,我需要确保生成的数字在0到100之间。 这就是我现在正在尝试的事情: number = random.NextDouble() * 100; 我该怎么办呢?

在平面地图上随机生成块

我试图在平面地图上随机生成块,并使它们彼此不重叠。 我已经制作了一个地图大小(500×500)的矩阵(c#数组),这些块的比例在1到5之间。代码可以工作但是如果生成的块与另一个块重叠,它就会被破坏而不会在其他地方重新生成。 我尝试生成的1000个块中只有大约80个不与另一个块重叠。 这是地图的图片,生成了大约80个块,绿色方块是块 void generateElement(int ratio, int minScale, int maxScale, GameObject g) { bool elementFound = false; for (int i = 0; i < ratio * generationDefault; i++) { GameObject el; // Randomly generate block size and position int size = Random.Range(minScale, maxScale + 1); int x = Random.Range(0, mapSizex + 1 – size); […]

C#/。NET Lexer生成器

我正在为C#/ .NET寻找一个不错的词法扫描程序生成器 – 支持Unicode字符类别,并生成一些可读和有效的代码。 谁知道一个? 编辑:我需要支持Unicode类别 ,而不仅仅是Unicode字符。 目前只有Lu (Letter,大写)类别中有1421个字符,我需要非常具体地匹配许多不同的类别,而不是手写它所需的字符集。 此外,实际代码是必须的 – 这排除了生成二进制文件然后与驱动程序一起使用的东西(即GOLD) 编辑:ANTLR尚不支持Unicode类别。 但是,它存在一个悬而未决的问题 ,所以它有朝一日可能符合我的需求。

我可以等待我用发电机创建的可枚举数吗?

假设我有异步获得的整数序列。 async Task GetI(int i){ return await Task.Delay(1000).ContinueWith(x => i); } 我想在该序列上创建一个生成器,如果序列是同步的,我会这样做: IEnumerable Method() { for (var i = 0; i < 100; i++) { yield return GetI(i); // won't work, since getI returns a task } } 所以,我认为类比是让生成器异步并从中产生: async Task<IEnumerable> Method() { for (var i = 0; i i); } } 这不起作用,因为带有yield的方法必须返回一个IEnumerable的东西,替代方案,更有意义的是IEnumerable<Task>但由于async方法必须返回Task s或void,因此无法编译。 现在,我意识到我可以简单地删除await并返回一个IEnumerable<Task>但这对我没有帮助,因为迭代会在任何数据准备就绪之前继续询问数据,所以它不能解决我的问题。 […]