生成随机文本文件C#的更快方法
输出应该是一个大的文本文件,其中每行都有表单编号.弦,文本是随机的: 347. Bus 20175. Yes Yes 15. The same 2. Hello world 178. Tree 必须在字节中指定文件大小.对生成约1000MB的文件的最快方式感兴趣. 有我的代码用于生成随机文本: public string[] GetRandomTextWithIndexes(int size) { var result = new string[size]; var sw = Stopwatch.StartNew(); var indexes = Enumerable.Range(0, size).AsParallel().OrderBy(g => GenerateRandomNumber(0, 5)).ToList(); sw.Stop(); Console.WriteLin
16 2024-04-26
编程技术问答社区
如何将价值传递给迭代器
在JavaScript中,我们有yield运算符,该操作员能够通过next()方法返回提供给生成器的值.来自 参数 value可选 发送到发电机的值. 该值将由于yield表达式而分配.例如,在variable = yield expression中,传递给.next()函数的值将分配给variable. and 返回值 返回传递给发电机的next()方法以恢复执行的可选值. 在c#中,我理解相当于Generator.prototype.next()的粗糙 IEnumerator.MoveNext() .但是,尽管next()采用可选的value参数,但在MoveNext()中没有任何等效参数. . 我真的很想能够将值传递给c#迭代器,就像我可以将值传递给JavaScript生成器一样.我想我可以尝试使用频道等,但是我希望利用句法糖C#自己的yield运算符提供.有人知道这是否可能吗? 解决方案 好的,在解决这个问题之后,这是一个回答的
48 2024-04-26
编程技术问答社区
C#"生成器 "方法
我来自Python的世界,并试图在C#中创建"生成器"方法.我正在用特定的缓冲区大小的块中解析文件,只想一次读取和存储下一个块,然后以foreach循环的方式屈服.这是我到目前为止所拥有的(简化的概念证明): class Page { public uint StartOffset { get; set; } private uint currentOffset = 0; public Page(MyClass c, uint pageNumber) { uint StartOffset = pageNumber * c.myPageSize; if (StartOffset
14 2024-04-21
编程技术问答社区
为一个简单的颜色方案发生器编程
我们正在开发C#中的网站CMS,并希望集成/开发一个小而简单的配色生成器,例如该网站上有6种用于颜色创建的方法.我们想重新编程"重音类似"算法的逻辑. 有人知道如何轻松实现这一点,还是我们可以在哪里找到有关此主题的更多信息.如何以编程为给定的基础找到一组和谐的颜色? 或者已经有一些可以完成这项工作的第三方控件? 例如.高级先进的高级彩色选择器或某些东西. 丹尼尔 解决方案 Adob​​e的Kuler擅长于此.如果您想查看控制库勒如何创建配色方案的理论,您可以查看诸如这样的示例.颜色理论. 您可以首先创建一个颜色轮,然后使用该链接中的方案定义(或其他)根据其在车轮上的位置进行选择(例如上面的类似方案). 其他解决方案 我发现这在过去很有用. 随机柔和的粉彩生成器 C#中的代码可以在上面的页面上找到.
12 2024-04-20
编程技术问答社区
C#的随机数发生器是如何工作的?
我只是想知道C#中的随机数生成器如何工作.我也很好奇我如何制作一个程序来生成随机 整数 1-100的数字. 解决方案 我只是想知道C#中的随机数发生器是如何工作的. 这是特定于实施的,但是 wikipedia wikipedia进入pseudo-random normum normum normum generators 一些想法. 我也很好奇我如何制作一个程序,该程序从1-100中生成随机的整数数字. 您可以使用 Random.Next(int, int) : Random rng = new Random(); for (int i = 0; i
42 2024-04-14
编程技术问答社区
C++相当于C#的产量?
public void Consumer() { foreach(int i in Integers()) { Console.WriteLine(i.ToString()); } } public IEnumerable Integers() { yield return 1; yield return 2; yield return 4; yield return 8; yield return 16; yield return 16777216; } 模板技巧(或其他)是否可以在C ++? 中获取相同的语法 解决方案 看一下Boost :: Coroutine.它做你想要的. 教程的示例 int range_generator(generator_type::self& self, int min, int max) { while(min
28 2024-04-12
编程技术问答社区
迭代器和枚举器之间的区别
.NET 3.5工作的面试问题是"迭代器和枚举者有什么区别"? 这是一个核心区别,linq等等 无论如何,有什么区别?我似乎在网上找不到可靠的定义.毫无疑问,我可以找到两个术语的含义,但是我得到的答案略有不同.面试的最佳答案是什么? imo迭代器"迭代"在集合上,枚举者为迭代提供了功能,但必须称为. 此外,使用收益率关键字可以节省状态.这个状态到底是什么?是否有这样的益处的例子? 解决方案 迭代意味着重复一些步骤,同时枚举意味着在值集合中浏览所有值.因此,列举通常需要某种形式的迭代. 这样,列举是迭代的一种特殊情况,即从集合中获得值的位置. 请注意"通常" - 列举也可以递归地进行,但是递归和迭代是如此密切相关,以至于我不关心这种很小的差异. 您还可以列举未明确存储在集合中的值.例如,您可以枚举自然数量,素数或其他任何内容,但您可以在枚举期间计算这些值,而不是从物理收集中检索它们.您将这种情况理解为枚举一个虚拟集合,其值由某些逻辑定义.
10 2024-04-12
编程技术问答社区
如何使`await ...`与`yield return`一起工作(即在一个迭代器方法内)?
我的现有代码看起来类似于: IEnumerable GetStuff() { using (SqlConnection conn = new SqlConnection(connectionString)) using (SqlCommand cmd = new SqlCommand(sql, conn) { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { SomeClass someClass = f(reader); // create instance based on returned row yield return someClass; } } } 看来我可以使用reade
12 2024-04-12
编程技术问答社区
在平面地图上随机生成区块
我试图在平面地图上随机生成块并制作块,以使它们不会相互重叠. 我制作了地图大小(500x500)的矩阵(C#数组),块的比例在1到5之间. 该代码有效,但是如果生成的块重叠了另一个块,则它将被销毁,并且没有再生. 我尝试生成的1000个块中只有80个块,不要重叠另一个块. 这是地图的图片,生成了约80个块,绿色正方形是块 void generateElement(int ratio, int minScale, int maxScale, GameObject g) { bool elementFound = false; for (int i = 0; i
24 2024-04-11
编程技术问答社区
地图生成器的梯度圆圈
所以我正在制作一个形成随机岛的地图发生器.它在发电机的核心上使用Perlin噪声,然后使用带有梯度的圆圈的方法来制造岛屿. 圆形方法在地图的中心中创建了许多圆圈,其梯度从颜色开始,从64降到0.问题是,此方法正在用圆形的部分创建地图的一部分边缘.当为像素生成perlin噪声时,它将在梯度图上获得该像素,然后通过蓝色值进行mutlip. 因此,如果perlin噪声在像素1、5上给出一个,梯度图上的蓝色值为54,则输出的噪声值为54.如果Perlin噪声130、560在560上为0.5,并且梯度颜色值为64,然后噪声值为32. 这是我得到的: 代码有两个关键点:perlin位: noise = NoiseGenerator.Noise(x, y); double gradColour = getGradColour(x, y).B; double addedNoise = noise * gradColour; double gradNoise = addedN
24 2024-04-10
编程技术问答社区
Yacc问题:让数据在下一个非终端可用
我想在c中提供一些我在B中生成的变量: a : b c { ...some code...} 一个简单的示例: b : X { int result = 0; } | Y { int result = 1; } 所以我可以,以后在c说: c : D { printf(result + 1); } | E { printf(result + 2); } 有机会这样做吗?任何帮助真的将不胜感激! 解决方案 result应该是一个全局变量.您可以通过包括 来做到这一点 %{ int result; %} 在YACC文件的顶部.当然,您还应该分别替换int result = 0和int result = 1 result = 0和result = 1. 其他解决方案 您可以按建议进行,但是通常在语法规则中使用Globals并不是一个好主意.声明b和c的类型,因此您的规则看起来像这样: %uni
12 2024-04-10
编程技术问答社区
Windows中CMake的默认生成器是什么?
在一台PC上运行CMAKE时,CMAKE默认情况下会生成Nmake文件.在另一个上,它生成了一个视觉工作室项目. 我知道我可以通过将-G "NMake Makefiles"添加到我的cmake语句的末尾来覆盖默认值,但是我想知道为什么它默认为一个在另一个和另一个上的nmake文件上的Visual Studio Projects默认. 解决方案 以下来自CMAKE源(版本2.8.4:cmake.cxx:起点2039): // Try to find the newest VS installed on the computer and // use that as a default if -G is not specified std::string vsregBase = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\"; struct VSRegistryEntryName
40 2024-04-06
编程技术问答社区
怎样才能对ES6生成器进行特征检测?
我真的很喜欢ES6发电机.有什么方法可以检测浏览器中的发电机支持?我知道发电机可能根本不在许多浏览器中(或者根本没有浏览器),但对于我的目的来说,这是可以的. 我尝试了: try { function *(){} } catch(err) { console.log("No generators"); } 但似乎不起作用. 如何检测浏览器中ES6发电机的支持? 解决方案 eval实际上是正确解决方案的几次之一. 对于语言构造的变化,您需要这样的东西: try { eval("(function *(){})"); } catch(err) { console.log(err); console.log("No generators"); } 其他解决方案 Jeremy很好地解释了如何测试发电机支持.您需要使用评估: isGeneratorSupported = function(){ try {
在Python中使用生成器进行广度优先的树形遍历
我正在研究如何在David Beakly的出色Python食谱文本中使用Python中的发电机.以下代码配方使用发电机非常优雅地定义了深度第一树遍历: # example.py # # Example of depth-first search using a generator class Node: def __init__(self, value): self._value = value self._children = [] def __repr__(self): return 'Node({!r})'.format(self._value) def add_child(self, node): self._children.append(node) def __iter__(self): return iter(self._children)
22 2024-04-03
编程技术问答社区
使用Python Bottle、多处理和gevent进行流式连接
我有一个瓶子应用程序,该应用程序使用子流程来完成大部分请求的工作.对于返回单个响应的路线,我做类似下面的事情. @route('/index') def index(): worker = getWorker() return worker.doStuff() 我的路线之一必须是数据流.我不知道让工人返回响应流的聪明方法.下面的示例类似于我想做的事,只有没有工人. @route('/stream') def stream(): yield 'START' sleep(3) yield 'MIDDLE' sleep(5) yield 'END' 我希望能够做以下类似的事情.由于我无法屈服/返回发电机,这是不可能的. @route('/stream') def stream(): worker = getWorker() yield worker.doStuff() class worker:
22 2024-04-03
编程技术问答社区
爪哇。通过给出数字N,生成true&false&s组合。
我绑定了尽可能简化任务,因此我可以将其应用于我的算法. 这是数学家和程序员的挑战: 我需要创建一个通过参数int n: 的方法 public void optionality_generator(int n){ //some kind of loops, or recursions...to make it workable System.out.println("current combination: ..."); } 输出应显示true和false的所有可能组合. 这是n = 1的示例; n = 2; n = 3; n = 4; n = 5其中x = false,0 = true;请注意,空断裂线只是为了让您识别模式.希望我包括所有可能的组合): Combination of 1: 0 x Combination of 2: 00 x0 0x xx Combination of 3: 000 X00 0X0 00X XX0 0XX XXX
8 2024-04-01
编程技术问答社区
如何让生成器/迭代器在耗尽时评估为假?
python中的其他空对象评估为false-如何使迭代器/发电机也可以这样做? 解决方案 默认情况下,Python中的所有对象评估为True.为了支持False评估对象的类必须具有__len__方法(0 - > False)或__nonzero__方法(False> - > False).注意:__nonzero__ ==> __bool__在Python 3.x. 中 因为迭代器协议有意保持简单,并且因为有许多类型的迭代器/发电机无法知道在尝试生产它们之前是否有更多的值可产生更多的值,所以True/False评估不是迭代协议的一部分. 如果您真的想要这种行为,则必须自己提供它.一种方法是将生成器/迭代器包裹在提供缺失功能的类中. 请注意,此代码仅在 StopIteration之后评估False . 作为奖励,此代码适用于Pythons 2.4+ try: next except NameError: # doesn't show
26 2024-04-01
编程技术问答社区
Node.js:用于'yield'关键词的承诺回调库
我正在尝试使用koa.js构建一个简单的REST API.它使用ES6 Generator功能,我发现它比回调更令人愉悦(它们就像C#的Async-Await).收益率关键字期望当时有一个(Promise,Thunk,Generator).我正在使用Bluebird的Promisifyall方法来应对回调库(在我的情况下请求),但我仍然会遇到错误.这是我的代码和错误: var koa = require('koa') , route = require('koa-route') , app = module.exports = koa() , Promise = require('bluebird') , request = Promise.promisifyAll(require('request')); app.use(route.get('/users', list)); function *list() { var res = yield request.get('
18 2024-04-01
编程技术问答社区