相关疑难解决方法(0)

随机数生成器仅生成一个随机数

我有以下功能:

//Function to get random number
public static int RandomNumber(int min, int max)
{
    Random random = new Random();
    return random.Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)

我怎么称呼它:

byte[] mac = new byte[6];
for (int x = 0; x < 6; ++x)
    mac[x] = (byte)(Misc.RandomNumber((int)0xFFFF, (int)0xFFFFFF) % 256);
Run Code Online (Sandbox Code Playgroud)

如果我在运行时使用调试器执行该循环,则会得到不同的值(这就是我想要的).但是,如果我在该代码下面放置一个断点两行,则"mac"数组的所有成员都具有相同的值.

为什么会这样?

c# random

741
推荐指数
8
解决办法
17万
查看次数

如何在web.config文件中添加命名空间?

我正在使用VS 2008和C#,但是当我在web.config文件中添加命名空间时,该命名空间未导入或包含在code behind or aspx
我也读过这个问题但没有得到所需的答案.

web.config代码

<configuration>
 <system.web>
    <pages>
      <namespaces>
        <add namespace="System.Data" />
        <add namespace="System.Text"/>
      </namespaces>
    </pages>  
  </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

c# namespaces web-config visual-studio-2008

23
推荐指数
2
解决办法
3万
查看次数

为什么序列化类中的Random实例重复生成相同的数字集?

所以我是ac#noob.我有一个简单的问题,我找不到其他任何地方的答案.

 [Serializable()]
 public class Dictionary
 {
    private Random m_RandomGenerator = new Random();

    public int GetNext() 
    {
        return m_RandomGenerator.Next(100);
    }
 }
Run Code Online (Sandbox Code Playgroud)

Dictionary每个节目开始时间点被加载,而这个代码将返回完全相同的序列每次运行时数.我的意思是,每次运行可执行文件.当然它所播种的时间值应该是不同的(DateTime.Now.Ticks我假设?).

几点:

  • 只有一个Dictionary实例,在启动时从先前导出的文件中反序列化.
  • 如果我使m_RandomGenerator静态,那么问题就解决了.

有谁知道为什么?我仔细检查过我每次都没有创建一个新的Dictionary实例,所以这不是问题.


好吧,让我感到尴尬.事实证明,罪魁祸首是[Serializable()]属性.我使用的字典类是从先前导出的文件加载的,显然是将种子加载回Random().将变量更改为静态意味着不再从先前序列化的实例加载种子值 - 隐藏问题.

感谢所有提供建设性意见的人!

c# random serialization

7
推荐指数
1
解决办法
994
查看次数