读书人

一个让小弟我蛋疼好几天也没算出来的算

发布时间: 2013-09-28 10:01:20 作者: rapoo

一个让我蛋疼好几天也没算出来的算法
本帖最后由 m3905 于 2013-09-25 08:37:53 编辑 I := 1-10000之间的随机数字(例如I = 3000), J := I的最低10% 最高30%(也就是 J := 300-900之间的一个数字),要求J按1-10000的百分比来得到这个数值(可以是浮点),也就是I的数值越低,J的值离I的%30就越近,I的数值越高则J的值离I的%10就越近,例如I=1 则J一定是等于0.3,再例如I=10000,则J一定等于1000.是1-10000逐渐降比率的过程,但是中间这些数值不知道该如何去求.
应该怎样列这个式子?我数学不好,这个问题困扰我好几天了,望各位高手帮忙!谢谢!

[解决办法]

Quote: 引用:

Var I,J,K:Double;
begin
I := StrToFloat(Edit1.Text);
J := (0.1 + (10000 - I) * (0.2) / 9999) * I;
Label1.Caption := FloatToStr(J);
end;

[解决办法]
// 特殊情况 单独考虑
function RanIJ( ):string;
var
tmp, v1, v2, cv: double;
begin
randomize();
cv := random();
v1 := 10000*(1 - cv);
if cv < 0.5 then
begin
tmp := v1 * 0.3 - cv*v1*0.2;
end
else
tmp := v1 * 0.1 + cv*v1*0.2;
result := floattostr(v1) + ',' + floattostr(tmp);
end;

读书人网 >.NET

热点推荐