Project1

标题: 随机获得正负号的方法 [打印本页]

作者: 沉影不器    时间: 2008-12-8 05:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 3nξhα0_lim    时间: 2008-12-8 05:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 一路一风尘    时间: 2008-12-8 05:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2008-12-8 08:11
-4 到 4

-4 +rand(4 * 2 + 1)

-4 + rand(9)


上面一時看錯==b,隨機正負應該這樣:
因為 -4 到 -4 的距離是0,到 4 的距離是8
所以
-4 + ( 8 * rand(2) ) # -4 加上(8×0 或者 8×1)
做成函數就是
def rands(val)
  val = -val if val < 0
  n   = -val + (2 * val * rand(2))
  return n
end
作者: 精灵使者    时间: 2008-12-8 08:22
def randsign(num = nil)
int a
unless num != nil
num = num.to_i
a = -1 + (rand(1)*2)
num *= a
return num
else
return nil
end
直接胡乱写了个函数……调用的时候直接用randsign(数字)则返回随机正负号的数字。
其他的char会转换为数字,如果是nil则返回nil
p.s.写得可能有错误,欢迎大家指正
作者: 雪流星    时间: 2008-12-14 06:53
def rand_sign(num)
  return [num, -num][rand(2)]
end

用數組.....
作者: 精灵使者    时间: 2008-12-14 06:55
以下引用snstar2006于2008-12-13 22:53:39的发言:

def rand_sign(num)
return [num, -num][rand(2)]
end

真不愧为流星,我怎么忘记使用数组了呢……
自我PIA飞之……
作者: sonwood    时间: 2008-12-14 07:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雪流星    时间: 2008-12-14 08:48
以下引用sonwood于2008-12-13 23:52:08的发言:
a=rand(2)
(a==1)?(a=-1):(a=1)

缩短了就是:
a = rand(2)==1? -1 : 1
[LINE]1,#dddddd[/LINE]
跟美兽说的一样,方法很多,没有现成
1. [num, -num][rand(2)]
2. num = rand(2)==1 ? num : -num
3. num *= rand(2)==1 ? 1 : -1
4. num *= -1 if rand(2)==1

那个看着美你就用那个吧
作者: 雷欧纳德    时间: 2008-12-14 08:53
def rand_sign(num)
return (2*rand(2)-1) * num
end

方法很多的说
作者: 沉影不器    时间: 2008-12-15 02:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-12-16 02:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 一路一风尘    时间: 2008-12-16 02:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-12-16 03:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-12-22 00:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-12-22 00:50
(2 * rand(2) - 1) * 变量

- -效率怎么看的……没测试过……从big o的方向考虑,好象最小也只能是n了吧……
作者: 沉影不器    时间: 2008-12-22 00:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 水迭澜    时间: 2008-12-22 00:57
没看回复……

作者: 美兽    时间: 2008-12-24 06:41
以下引用沉影不器于2008-12-21 16:48:27的发言:

max和min大概以某某排序法筛选出来的吧?
在数组元素多的情况下效率低,只两个元素也低么?一个判断就分出来了,机器最拿手的就是逻辑运算...


非常低,元素越少越低。
作者: 沉影不器    时间: 2008-12-31 03:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 灼眼的夏娜    时间: 2009-1-1 20:13
以下引用沉影不器于2008-12-15 19:29:36的发言:


以下引用一路一风尘于2008-12-15 18:49:08的发言:

哦,呵呵,知道问题所在,不必拘泥方法。

另外.max与.mix的效率极差。


如果使用者知道从小到大写两个参数,就不需要了

关于alias,似乎ruby真的是用链表之类的东西保存了所有方法名


ruby内部使用hash保存的方法名那些
作者: 沉影不器    时间: 2009-1-14 03:26
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1