c# - 长期存储和恢复变化

标签 c# .net math logic

我的 n 值在相同的最小和最大范围内。

// value range
int minValue = 0;
int maxValue = 100;
int valueCount = 3; // number of values

// Example 1
int a = 0;
int b = 0;
int c = 0;

// Example 2
int a = 100;
int b = 100;
int c = 100;

// Example 3
int a = 12;
int b = 80;
int c = 27;

示例 1 和 2 显示了这 3 个值的最小和最大变化,其中示例 3 显示了一些随机值。

对于给定的最小值和最大值,这 3 个值的所有变化的可能数量是 100 * 100 * 100 = 1.000.000。

因此,如果我定义 0 代表示例 1 的变化,而 1.000.000 代表示例 2 的变化。我如何计算代表示例 3 的值?

或者更好的是,我如何遍历所有可能的变化以及如何恢复它们。

for(int i = 0; i <= 1000000; i++)
{
    int[] values = GetValues(i, minValue, maxValue, valueCount);
}

所以我正在寻找的是像上面的 GetValues() 方法一样工作的东西。

最佳答案

这就像在知道该单元格的内存偏移量时查找 n 维数组的索引。

public static IEnumerable<int> GetValues(long i, int minValue, int maxValue, int valueCount)
{
    var range = maxValue - minValue + 1;

    for (int j = 0; j < valueCount; j++)
    {
        yield return (int)(i % range + minValue);
        i = i / range;
    }
}

正如我在评论中提到的,您提供的示例是错误的。

1030301 个变化,因为每个项目可以有 101 不同的值(从 0 到 100),变化总数为 101*101 *101 = 11030301

关于c# - 长期存储和恢复变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360089/

相关文章:

c# - C# 中 Excel 2016 的 oledb 连接字符串

c# - ASP.Net c# - 如何从 App_Code 类中实例化 WebUserControl 的实例?

c# - 将控制台附加到正在运行的 ASP.NET 应用程序

c++ - 在更接近于零的有限大小数组中选择 float 的有效方法是什么?

c++ - 从 [0.5 - 1] 规范化到 [0 - 1]

c# - web.config 键值对可以用作 asp.net c# 中的编译时间常量吗?

c# - 包含 Microsoft.Web.Mvc dll 后,Html.RenderAction 不可用

c# - 基本类型和继承类型的工作通用列表

c# - JavaScript 代码可以使网络浏览器上的文本闪烁一次

ios - objective-c 中带有长数的pow操作