【问题标题】:which method is equivalent Rand (int) in Visual Fox Pro to C #Visual Fox Pro 中的哪种方法等效于 C# 中的 Rand(int)
【发布时间】:2012-06-05 21:49:30
【问题描述】:

占用将Visual Fox Pro emigrarlo迁移到C#中的方法,我遇到的问题是如何知道Visual Fox Pro中的方法:

Rand(intValue)

方法等于dotNet:

Random r = new Random (intValue);
r.Next return ();

假设 intValue = 971 dotNET 中生成的结果是 2027119,但我需要等于返回 FoxPro。

主要问题: 如何确保获得相同的结果?

次要问题: 你知道有什么在线工具fox pro可以证明这个方法给我结果Rand()吗?

【问题讨论】:

  • 那么,您想知道在 FoxPro 中调用 Rand 函数是否会返回与在 .NET 中调用 Random.Next() 相同的值?我想这取决于底层算法是否相同,我对此表示怀疑。
  • 所以你想让两个“随机”数字不是随机的吗?不计算..
  • RobertMS:我也怀疑他们是否有相同的结果。因为我不知道如何在 C# 和 FoxPro 中产生相同的结果,所以我想说明我的问题
  • 你为什么要一遍又一遍地发同样的问题?(linklink

标签: c# asp.net .net foxpro visual-foxpro


【解决方案1】:

主要问题:如何确保获得相同的结果?

所以你要保证你得到相同的结果......从两个不同的随机数生成器......对。

intValue 在您的 FoxPro 示例中是一个种子值。为什么你需要保证这两个库使用相同的随机数生成器(提示:它们几乎肯定不会)。说真的,如果你追求的是随机数,那有什么区别呢?

如果您想要一个已知的数字系列,那么您根本就不需要一个随机数。这让我大吃一惊。如果您的代码设置为期望来自随机数生成器的特定字符串,那么就会出现更大的问题。您也可以使用 FoxPro 中的数字生成地图并从中获取数字。

【讨论】:

  • 我不想用相同的代码得到相同的结果,我想在 C# 和 Visual Fox Pro 中得到相同的结果可能使用相同的方法和/或任何参数或不同方法。
  • 代码被配置为期望某个值链如果用户发生任何值,不描述算法不详细回答我,因为用户可以捕获任何字符串我无法映射由 foxpro 生成的数千(或数百万)个可能的组合
【解决方案2】:

实现此目的的唯一方法是创建一个 Visual FoxPro COM 对象,该对象具有一个获取种子值并返回生成的随机数的方法,然后通过 C# 中的 COM 互操作使用它。

没有办法让原生 C# 做到这一点。所以别问了。

【讨论】:

    【解决方案3】:

    我不确定您为什么要这样做,但这里有一个 Visual FoxPro Toolkit for .NET http://foxcentral.net/microsoft/vfptoolkitnet.htm 它可能具有相同的 rand 生成器功能。

    【讨论】:

    • 我不想依赖visual fox pro中的应用,我想独立,你的回答是我目前获得的更多hacerta,明天会证明..谢谢=D
    • 它只是调用普通的c#Random.Next函数='(
    【解决方案4】:

    你所问的都是可能的。您只是不能使用 Foxpro 和 .NET 框架提供给您的生成器。

    大多数“随机”数字生成器只生成“看起来”或“感觉”随机的数字序列。它们的工作方式是这样的(非常简化):从“种子”值开始,应用转换并生成一个值,然后将转换应用于该值并获得下一个。根据需要重复。转换是这样的,您可以期望值在给定段内均匀分布,通常是 [0,1)。我可以进一步解释这一点,但是周围有很多文献。搜索它。

    现在,显然,如果您为任何给定的生成器提供相同的种子,您将一遍又一遍地获得相同的序列。

    因此,要获得您想要的结果,您需要在 VFP 和 C# 中实现自己的伪随机数生成器。请记住,诸如精度差异之类的事情可能会导致对生成器的连续调用产生分歧。

    无论如何,您将需要一个算法。去这里:use of D.Knuth pseudo-random generator

    希望这仍然有用。

    【讨论】:

      【解决方案5】:

      你不能。您正在设置种子值,但 .NET 和 FoxPro 使用完全相同的方法生成随机数的机会接近于零。但问题是,你为什么要这个?随机应该是随机的。

      【讨论】:

      • visual fox pro 中的代码是这样做的,许多使用应用程序并期望返回结果为 vfp
      • 这是因为VFP中的随机生成很弱,所以相同的种子每次返回相同的结果。这使得随机生成器的随机性降低。在 C# 中获得相同结果的唯一方法是使用 VFP 中的 COM 构建(如 @AlanB 建议的那样),它使用 VFP 随机生成器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多