GAMS十进制数字

时间:2018-07-30 12:51:54

标签: random long-integer gams-math

我有以下代码:

docker run -it -p 4567-4578:4567-4578 -p 8080:8080 localstack/localstack

我将使用整数bool detectKeyboard() { bool bHasKeyboard = false; UINT nDevices; UINT ret = GetRawInputDeviceList(NULL, &nDevices, sizeof(RAWINPUTDEVICELIST)); if (ret == 0) { PRAWINPUTDEVICELIST pRawInputDeviceList = new RAWINPUTDEVICELIST[nDevices]; ret = GetRawInputDeviceList(pRawInputDeviceList, &nDevices, sizeof(RAWINPUTDEVICELIST)); if (ret != (UINT)-1) { for (UINT i = 0; i < nDevices; ++i) { if (pRawInputDeviceList[i].dwType == RIM_TYPEKEYBOARD) { bHasKeyboard = true; break; } } } // else error calling GetRawInputDeviceList to fetch the devices list delete[] pRawInputDeviceList; } // else error calling GetRawInputDeviceList to return number of devices return bHasKeyboard; } 作为另一组loop (d, rnd(d)=uniformInt(1,nd) ); 的索引。但是例如,当rnd(d)是整数,但是s(i)没有有效的索引,因为rnd(d)=34.000不是s(34.000)! GAMS会显示错误消息。

2 个答案:

答案 0 :(得分:0)

我要点菜吗?如果是,则可以使用以下方式:

loop(d,
  s(i)$(ord(i)=rnd(d)) = ...;
)

答案 1 :(得分:0)

我不知道@Lutz解决方案是否适合您。如果没有,您可以尝试以下方法: 首先,不必遍历set d,只需一个简单的操作即可:

rnd(d) = uniformInt(1,nd);

就足够了。 下一行可以这样:

loop(d,
     s(i)$(i.val = ord(d)) = . . .;
     );

如果您仍然遇到问题,则可以使用@Lutz建议,只需将'* 1.000'附加到'ord(i)'和/或'rnd(d)'(以给您的问题为准)。