|
The easiest general solution for a very small # of discrete states is to invert the CDF. Generate a uniform on [0,1].
When it's between [0, .1) map to 1, [.1, .3) map to 2, [.3, .4) map to 3, [.4, .6) map to 4, [.6, 1) map to 5.
|
|
|
|
|
And how is that any different from what I posted?
|
|
|
|
|
It's very similar, but most likely is less efficient given the implementation of Random. (Yes I have designed several simulation algorithms before).
Random generators are typically designed to generator random unsigned longs of uniforms efficiently.
The generators that give you a random integer have an unnecessary multiplication thrown unless of course
they are specialized for powers of two where they use bitwise operators.
|
|
|
|
|
I am trying to pass a two dimensional array in Visual Basic. Please consider the following program:
Module Matrix
Sub printMatrix(ByRef mat(,))
For i = 0 To 1
For j = 0 To 1
Console.Write("{0}", mat(i, j))
Next j
Console.WriteLine()
Next i
End Sub
Sub Main()
Dim mat1(,) As Double = {{1, 2}, {2, 3}}
Dim mat2(,) As Double = {{1, -2}, {2, 3}}
Dim mat3(1, 1) As Double
mat3(0, 0) = 2
printMatrix(mat1)
End Sub
End Module
I want to pass the array mat1 to the routine printMatrix. However, when I compile the above code,
I get the following error message:
error BC30333: Value of type '2-dimensional array of Double' cannot be converted to '2-dimensional array of Object' because 'Double' is not a reference type.
I understand that Double is a value type, not a reference type but I would expect to be
able to pass a two dimensional array of Doubles. If I can, please tell me how.
Thanks
Bob
|
|
|
|
|
BobInNJ wrote: ByRef mat(,))
I don't know the syntax, but you're clearly not specifying here what sort of array you're sending, and the match in variable names is irrelevant. I expect that means it's trying to take Object by default, and it's refusing to box it for you.
Christian Graus
Driven to the arms of OSX by Vista.
Read my blog to find out how I've worked around bugs in Microsoft tools and frameworks.
|
|
|
|
|
BobInNJ wrote:
The default type for mat , since you didn't specify it, is Object. Your code, as written, is actually:
Sub printMatrix(ByRef mat(,) As object)
By the way, the ByRef is redundent in this case since all reference type as always bassed by, well, reference.
Your code should read:
Sub printMatric(ByRef mat(,) As Double)
|
|
|
|
|
Dave,
Thanks for the response. You solved my problem.
Bob
|
|
|
|
|
Hello every body:
How I can make a blinking Label? I know I am unclear but I don't know how I can ask! Suppose there is a label that the text of it, is a red star, like this :
' * '
I want star like a light can be on and off, on and off, on and off…
I hope, my question is understandable and clear!
|
|
|
|
|
A way that I can think of doing this is to have a timer and handle its tick event. In that event, just remove and add "*" to the label text.
50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
|
|
|
|
|
use a System.Windows.Forms.Timer, and in its Tick handler modify the Label properties; either Visible, or ForeColor or Text.
|
|
|
|
|
I have a function as follows:
Function XYZ As Boolean
End Function
That's right, there is no code in the function. Does it return True by default?
.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
what have you tried so far?
what says the documentation?
do you use "Options Strict On"? I know I would.
|
|
|
|
|
I don't "try" VB. I'm just trying to understand their code.
I think strict is on.
I just need an answer to my question - yes or no.
.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
I don't have the official answer. Most likely this one[^] is pretty close:
"Because VB.NET has defined a 'hidden' variable that is returned by the
function, this variable is the same name as the function. If you do not use
the Return statement, this variable is returned automatically. If you do not
set the variable the default value is used"
and I would expect the hidden variable to be defaulted to nada, all bits zero, just like
class data members, hence False for booleans.
It is bound to be a VBx relic.
|
|
|
|
|
A quirky little language, but the default value returned is the default value of the type the function is supposed to return. In your case, False. In the case of numeric types, an appropriate value of 0. For references types, Nothing (null in C#).
|
|
|
|
|
that's what I call nada. However I wasn't able to quickly find it anywhere in official documents...
|
|
|
|
|
Dave Kreskowiak wrote: For references types, Nothing (null in C#).
The C# equivalent code won't compile. In C# there is no default and you must specify a return or you get a compilation error. That's one of the reasons I prefer C# to VB, because it's a bit "tighter" on some things. (Not meant to start a language war: I like VB too, and I like Java and Python. I am multi-denominational in my coding.)
|
|
|
|
|
David Skelly wrote: The C# equivalent code won't compile. In C# there is no default and you must specify a return or you get a compilation error.
I didn't say it would. John is a C# guy and "Nothing" may seem a little strange to him, so I gave him the C# equiv to Nothing, which is null.
|
|
|
|
|
Why not run the code and check yourself? You can also create one sample kind of solution and test this.
50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
|
|
|
|
|
Basically because one should, as much as possible, base coding decisions on documentation, not observation. If behavior isn't documented, it has a higher probability of getting changed over time (or it may even not be constant at all, and the observation might miss that).
|
|
|
|
|
Luc Pattyn wrote: Basically because one should, as much as possible, base coding decisions on documentation, not observation
Man am I in the poop, scenario, you get a new tool to play with, the last one was spreadsheetgear, do you seriously read the doco or go down and kick the tyres.
Me, if the tyre goes flat I then turn to the doco to find out why. If I see weird behavior I will resort to the doco but only after absorbing the examples first.
I vote he should have tried the function accepted the false default and moved on.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Mycroft Holmes wrote: if the tyre goes flat I then turn to the doco to find out why
Wow, if my tyre goes flat I go and put more air in it. If it keeps going flat, i get it checked at the tyre centre.
|
|
|
|
|
I don't base my developments on an "it seems to work" approach:
When given a new compiler for a new language, I'll play with it first for an hour or so, then spend up to two days reading at least one book about it, then get productive right away. And when given an existing code base in that new language, I will not change a thing to it before I feel comfortable with the language, so that IMO is why John asked the question he asked.
|
|
|
|
|
When you explicitly return no value before the function call ends, the default value for the return type is returned. In case of Boolean, it is False.
On a logical side, True is expected to signal a success, when you have not written any code at all, how do you expect it to return True by default.
|
|
|
|
|
It returns False by default.
|
|
|
|
|