Talk:Seven-sided dice from five-sided dice: Difference between revisions
Content added Content deleted
(J suggestions) |
|||
Line 8: | Line 8: | ||
I'd really like someone knowledgeable to look and make J solution more elegant. This straightforward solution doesn't look very good. [[User:Avmich|Avmich]] 21:03, 13 September 2009 (UTC) |
I'd really like someone knowledgeable to look and make J solution more elegant. This straightforward solution doesn't look very good. [[User:Avmich|Avmich]] 21:03, 13 September 2009 (UTC) |
||
:You could use this <code>dice5</code> and either <code>dice7a</code> or <code>dice7b</code> for the main bit: |
|||
<lang j>dice5=: >:@:?@$&5 |
|||
dice7a=: 0 8 -.~ 3 >.@%~ 5 #. [: <:@dice5 2 ,~ ] |
|||
dice7b=: [: (#~ 7&>:) 3 >.@%~ [: 5&#.&.:<:@dice5 ] , 2: </lang> |
|||
:Then it's just a question on ensuring that you've got enough rolls. You could use the following explicit: |
|||
<lang j> |
|||
dice7=: monad define |
|||
res=. 0$0 |
|||
while. y > #res do. |
|||
res=. res, dice7a >. 0.75 * y |
|||
end. |
|||
y {. res |
|||
) |
|||
</lang> |
|||
:...or you could create a tacit equivalent using the <code>^:</code> conjunction.--[[User:Tikkanz|Tikkanz]] 00:15, 14 September 2009 (UTC) |
Revision as of 00:15, 14 September 2009
It's more common for computer random number generators to generate a random number from 0 to n-1, than from 1 to n. So I propose changing the definitions of dice5() and dice7() to generate integers from 0..4 and 0..6, respectively. It will make the math a little simpler. --96.238.211.175 08:26, 9 August 2009 (UTC)
- Hi, please don't change this as it is more common for dice to count from 1. It is better to make the program adapt to the problem in this case. --Paddy3118 08:56, 9 August 2009 (UTC)
- As noted in the Tcl explanatory text, this is explicitly about making a primitive D5 and creating a D7 from it. (That's also why I use the terms D5 and D7; what programmer hasn't played at least some D&D? :-)) In any case, no conventional die (the correct singular form of “dice”) numbers from 0. —Donal Fellows 10:04, 9 August 2009 (UTC)
- I'm probably the exception that proves the rule about D&D. (My great time waster was PacMan)! --Paddy3118 11:10, 9 August 2009 (UTC)
J solution seems ugly
I'd really like someone knowledgeable to look and make J solution more elegant. This straightforward solution doesn't look very good. Avmich 21:03, 13 September 2009 (UTC)
- You could use this
dice5
and eitherdice7a
ordice7b
for the main bit:
<lang j>dice5=: >:@:?@$&5 dice7a=: 0 8 -.~ 3 >.@%~ 5 #. [: <:@dice5 2 ,~ ] dice7b=: [: (#~ 7&>:) 3 >.@%~ [: 5&#.&.:<:@dice5 ] , 2: </lang>
- Then it's just a question on ensuring that you've got enough rolls. You could use the following explicit:
<lang j> dice7=: monad define
res=. 0$0 while. y > #res do. res=. res, dice7a >. 0.75 * y end. y {. res
) </lang>
- ...or you could create a tacit equivalent using the
^:
conjunction.--Tikkanz 00:15, 14 September 2009 (UTC)