好吧,我猜这完全是主观的,但我正在考虑随机数生成器的熵源.大多数发电机都按当前时间播种,对吗?好吧,我很好奇其他资源可以用来生成完全有效的,随机的(宽松的定义)数字.
使用多个来源(例如时间+当前硬盘寻找时间[我们在这里是非常奇妙的])一起创建一个比单个来源更"随机"的数字?来源数量的逻辑限制是什么?真的够多少钱?选择时间只是因为方便吗?
如果不允许这种事情,请原谅我,但我对这些消息来源背后的理论感到好奇.
我一直在阅读很多关于C++中非托管DLL的教程/文章.然而,对于我的生活,我似乎无法掌握这个概念.我很容易因为它是否需要头文件,如何导出它,是否需要.lib文件以及你有什么看似不一致而感到困惑.
所以,我们假设我只有这样的函数:
public int calculateSquare(int num)
{
return num*num;
}
Run Code Online (Sandbox Code Playgroud)
忽略实际的代码,我需要做什么才能将这个简单的函数本身变成一个我可以调用的DLL?我只是添加__dllexport或其他任何内容到第一行还是我需要标题?所有这一切让我感到困惑.
相当基本的问题在这里.
基本上我有这样的代码:
public SuperPanel() {
setLayout(new BorderLayout());
add(panel1(), BorderLayout.NORTH);
add(panel2(), BorderLayout.CENTER);
add(panel3(), BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)
这一切都运作良好.问题是我还有另一部分要添加到中心.add(newPanel(), BorderLayout.CENTER)
显然,只是使用不起作用.但你可以在JPanel
s中添加JPanel
s,对吗?
所以我做了以下改动:
public SuperPanel() {
setLayout(new BorderLayout());
add(panel1(), BorderLayout.NORTH);
add(supersweetpanel(), BorderLayout.CENTER);
add(panel3(), BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)
随着supersweetpanel()
:
public JPanel supersweetpanel() {
JPanel sswp = new JPanel();
setLayout(new BorderLayout());
add(panel2(), BorderLayout.NORTH);
return sswp;
}
Run Code Online (Sandbox Code Playgroud)
现在它覆盖了panel1
!如果我将它设置为其他任何东西(CENTER
,SOUTH
有什么东西),前两个面板完全消失.非常感谢帮助.
所以,简单的程序,计算一个阶乘数.代码如下.
int calcFactorial(int num)
{
int total = 1;
if (num == 0)
{
return 0;
}
for (num; num > 0; num--)
{
total *= num;
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
现在,对于大多数数字来说,这样做工作得很好而且花花公子(肯定有更快更优雅的解决方案,但这对我有用).然而,当输入更大的数字,如250,它说得直言不讳,疯了.现在,250的前几个因子"位"是{250,62250,15126750,15438000,3813186000}以供参考.
我的代码吐出{250,62250,15126750,15438000,-481781296 },这显然是关闭的.我的第一个怀疑可能是我违反了32位整数的限制,但考虑到2 ^ 32是4294967296,我不这么认为.我唯一能想到的可能是它违反了签名的 32位限制,但它不应该能够考虑这种事情吗?如果签名是问题,我可以通过使整数无符号来解决这个问题,但这只是一个临时解决方案,因为下一次迭代产生938043756000,远高于4294967296限制.
那么,我的问题是签名限制吗?如果是这样,我可以做些什么来计算大数(虽然我已经做了一段时间的"大型英语"课程,但这可能很适合!)而不会再遇到这个问题?