According to the README for `node-red-node-random`

, in floating-point mode this node gives a random output, x, that is strictly between the given maximum and minimum values, that is, min < x < max. However, everything I've read about the Math.random() method (for instance, https://www.w3schools.com/jsref/jsref_random.asp) implies that the lower limit is included, that is min ≤ x < max. The difference might seem trivial, but it does matter for a flow I'm developing. Is the README wrong, or have I mis-read something in the code?

# Question about node-red-node-random

**drmibell**#1

0 Likes

**craigcurtin**#2

Even more interesting is the help screen

It behaves differently based on what you are asking the output to be formatted as !!

Craig

0 Likes

**craigcurtin**#3

Here is the actual JS could explain some of the reasons

```
module.exports = function(RED) {
"use strict";
function RandomNode(n) {
RED.nodes.createNode(this,n);
this.low = Number(n.low || 1);
this.high = Number(n.high || 10);
this.inte = n.inte || false;
this.property = n.property||"payload";
var node = this;
this.on("input", function(msg) {
var value;
if (node.inte == "true" || node.inte === true) {
value = Math.round(Number(Math.random()) * (node.high - node.low + 1) + node.low - 0.5);
}
else {
value = Number(Math.random()) * (node.high - node.low) + node.low;
}
RED.util.setMessageProperty(msg,node.property,value);
node.send(msg);
});
}
RED.nodes.registerType("random",RandomNode);
}
```

Craig

0 Likes

**dceejay**#4

Yes it behaves differently on purpose.

And yes in float mode it does include the minimum.

The thinking being that for non computer folk, if I want say a dice to give me a number from 1 to 6 I would ask for that not 1 to 7.

1 Like

**drmibell**#5

Thanks, Dave. Would you mind correcting the documentation?

I also wonder about using the Number() method in the code. Is that just to protect against some sort of wonkiness in the random number generator?

0 Likes