C#随机生成位串" 0001"," 1010"等

时间:2016-11-20 16:41:34

标签: c# linq

我需要随机生成一个4位字符串并通过Linq设置为一个属性。

现在是硬编码:

        // TODO: hardcode bit string
        employees = employees.Select(x => { x.Options = "0101"; return x; }).ToList();

我需要选项是随机的,所以我可以得到所有4位可能的值:" 0001"," 0010"," 0011"等等。

我正在考虑使用随机01变量并生成值4次并连接字符串。

  

关于如何实现这一点的任何线索?

3 个答案:

答案 0 :(得分:1)

如果速度很关键,例如在循环中调用此操作,则使用包含所有可能值的16个元素字符串数组并随机选择元素会更有效。

答案 1 :(得分:0)

您可以使用此

Convert.ToString(int, 2);

这会将int转换为base 2 string

其中int是一个不包括16的随机数。

答案 2 :(得分:0)

var rand = new Random();
Convert.ToString(rand.Next(16), 2).PadLeft(4, '0')

说明:

第一行创建一个随机对象,这里没什么难以理解的......第二行首先生成0到15之间的随机数(rand.Next(16))。然后它将随机数放入Convert.ToString。该方法将数字转换为基数2(因为第二个参数是2)。但是,这还不够,因为如果随机数可以用3位或更少的数字表示,则返回的字符串将不具有前导0。这就是我使用PadLeft添加它们的原因。