puts "How many dice do you want to roll?"
roll = gets.chomp
num_rolls = roll
y = 0
x = y.to_i + 1
while x <= roll.to_i
puts "Roll " + x.to_s + ": " + rand(max=6).to_s
end
Take out the gets.chomp:
roll = '12' # gets.chomp
that lets you work on the loop without entering over and over again.
then either fix your while loop by incrementing: x += 1
or use an each loop (which is truly the Ruby way):
(0...roll.to_i).each do |x|
puts 'etc'
end
···
On Sep 6, 5:01 pm, Hd Pwnz0r <human.diction...@rocketmail.com> wrote:
It won't work. It's odd. It won't stop and it won't add a number onto x
so it would say
"Roll 1: 5
Roll 2: 3"
etc
It just repeats "Roll 1: (random number)".
Also, is there a way for me to add one to the rand function so it won't
get a zero?
I've added comments to your code pointing to areas of concern:
puts "How many dice do you want to roll?"
roll = gets.chomp
num_rolls = roll # Why are you assigning to num_rolls here? You never
use this variable!
y = 0 # "y" is a bad name for a variable, generally. What is this
variable for? Why is it 0?
x = y.to_i + 1 # What is "x" for? Why are you calling to_i on
something you just assigned an integer value, so you should know you
don't need this?
while x <= roll.to_i # since you never assign to x, if it is ever
true, it will always be true and you'll never escape from the loop.
puts "Roll " + x.to_s + ": " + rand(max=6).to_s # you are assigning
6 to max -- a variable you never use anywhere else -- and then
immediately passing that to rand. Why?
end
···
On Mon, Sep 6, 2010 at 5:01 PM, Hd Pwnz0r <human.dictionary@rocketmail.com> wrote:
It won't work. It's odd. It won't stop and it won't add a number onto x
so it would say
"Roll 1: 5
Roll 2: 3"
etc
It just repeats "Roll 1: (random number)".
Also, is there a way for me to add one to the rand function so it won't
get a zero?
puts "How many dice do you want to roll?"
roll = gets.chomp
num_rolls = roll
y = 0
x = y.to_i + 1
while x <= roll.to_i
puts "Roll " + x.to_s + ": " + rand(max=6).to_s
end
Take out the gets.chomp:
roll = '12' # gets.chomp
that lets you work on the loop without entering over and over again.
That changes the behavior of the program pretty significantly, though.
then either fix your while loop by incrementing: x += 1
or use an each loop (which is truly the Ruby way):
(0...roll.to_i).each do |x|
puts 'etc'
end
I'd be inclined to use #times:
print "How many dice do you want to roll? "
num_rolls = gets.to_i
num_rolls.times do |n|
puts "Roll #{n+1}: #{rand(6) + 1}"
end
David
···
On Tue, 7 Sep 2010, Phlip wrote:
On Sep 6, 5:01 pm, Hd Pwnz0r <human.diction...@rocketmail.com> wrote:
--
David A. Black, Senior Developer, Cyrus Innovation Inc.
The Ruby training with Black/Brown/McAnally
Compleat Philadelphia, PA, October 1-2, 2010
Rubyist http://www.compleatrubyist.com
Thanks Brian for pointed out this. Yes it will returns the value bw 0 and 4
suits for 5-sided die.
We can use this
puts "Roll #{n+1}: #{1 + rand(7-1)}"
This way we can get the values between 0 to 6 as final result.
···
On Tue, Sep 7, 2010 at 1:22 PM, Brian Candler <b.candler@pobox.com> wrote:
Vadivelan Vaddi wrote:
> By adding the min value to the rand(max-min), we can get random number
> bw the range(min,max).
>
> print "How many dice do you want to roll? "
> num_rolls = gets.to_i
> num_rolls.times do |n|
> puts "Roll #{n+1}: #{1 + rand(6-1)}"
> end
That's a five-sided die. rand(5) gives a number between 0 and 4
inclusive.
--
Posted via http://www.ruby-forum.com/\.