Project1
标题: 随机数写法 [打印本页]
作者: 黑米馒头 时间: 2022-10-31 14:51
标题: 随机数写法 # 排除随机数的写法
设置变量为5个随机数,想实现随机数随着变量的出现逐渐变少,
比如0出现过了,就不会再出现了,以此类推,等所有情况都出
现过1次之后,就又开始循环,每次循环出来的数值都是随机的
a = rand(5)
case a
when 0
p "一号"
when 1
p "二号"
when 2
p "三号"
when 3
p "四号"
when 4
p "五号"
end
作者: 灯笼菜刀王 时间: 2022-10-31 15:22
本帖最后由 灯笼菜刀王 于 2022-10-31 15:35 编辑
if @f.nil? or @f.empty?
@f = [1,2,3,4,5]
@f.size.times {|k| a,b=rand(@f.size),@f[k];
@f[k] = @f[a];@f[a]=b}
end
p @f.shift
作者: 黑米馒头 时间: 2022-11-5 13:31
出现重复的情况了,是我写错了吗~
# 当变量不等于无或者空的情况
if @f .nil ? or @f .empty ?
# 定义数组
@f = [ 0 ,1 ,2 ,3 ,4 ,5 ]
#
@f .size .times { |k| a,b=rand ( @f.size ) ,@f[ k] ;
@f [ k] = @f [ a] ;@f[ a] =b}
end
p @f .shift
case @f .shift
when 0
update_message( "1" ,"系统" )
when 1
update_message( "2" , "系统" )
when 2
update_message( "3" ,"系统" )
when 3
update_message( "4" ,"提示" )
when 4
update_message( "5" ,"提示" )
when 5
update_message( "6" , "提示" )
end
# 当变量不等于无或者空的情况
if @f .nil ? or @f .empty ?
# 定义数组
@f = [ 0 ,1 ,2 ,3 ,4 ,5 ]
#
@f .size .times { |k| a,b=rand ( @f.size ) ,@f[ k] ;
@f [ k] = @f [ a] ;@f[ a] =b}
end
p @f .shift
case @f .shift
when 0
update_message( "1" ,"系统" )
when 1
update_message( "2" , "系统" )
when 2
update_message( "3" ,"系统" )
when 3
update_message( "4" ,"提示" )
when 4
update_message( "5" ,"提示" )
when 5
update_message( "6" , "提示" )
end
作者: RPGzh500223 时间: 2022-11-5 17:44
本帖最后由 RPGzh500223 于 2022-11-5 17:51 编辑
帖子的文字说明……我是一点都没看懂,还是看代码吧
2楼的代码 => Array#shuffle!(rmxp的ruby版本没有)
获取非重复值的话,必须保证数据的初始值是唯一的,如@f = [0, 0, 1, 1]就不行
多重赋值是同时进行的, 数组是可以这么写的,如:@f [ a] , @f [ b] = @f [ b] , @f [ a]
@f [ a] , @f [ b] = @f [ b] , @f [ a]
Array#shift => 删除数组的首单元并返回它。剩余单元依次提前。若数组为空返回 nil。(F1原文)
假设 @f = [0, 5, 3, 1, 2, 4]
p @f.shift # 0
case @f.shift # 5
case 表达式
[when 表达式 [, 表达式] ... [then]
表达式 ..]..
[else
表达式 ..]
end (F1原文)
# 条件:@f未声明或已初始化为数组
if @f .nil ? || @f .empty ?
@f = [ 0 , 1 , 2 , 3 , 4 , 5 ]
n = @f .size
n.times do |k|
a = rand ( n)
@f [ a] , @f [ k] = @f [ k] , @f [ a]
end
end
if ( n = @f .shift ) != nil
case n
when 0 , 1 , 2 then update_message( n, "系统" )
when 3 , 4 , 5 then update_message( n, "提示" )
end
# 或者 update_message(n, n < 3 ? "系统" : "提示")
end
# 条件:@f未声明或已初始化为数组
if @f .nil ? || @f .empty ?
@f = [ 0 , 1 , 2 , 3 , 4 , 5 ]
n = @f .size
n.times do |k|
a = rand ( n)
@f [ a] , @f [ k] = @f [ k] , @f [ a]
end
end
if ( n = @f .shift ) != nil
case n
when 0 , 1 , 2 then update_message( n, "系统" )
when 3 , 4 , 5 then update_message( n, "提示" )
end
# 或者 update_message(n, n < 3 ? "系统" : "提示")
end
这和随机数有什么关系
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1