js 按照0:70%,1:30%的概率生成0和1的随机数
时间: 2024-09-25 13:16:43 浏览: 29
在JavaScript中,你可以使用`Math.random()`函数结合一些简单的数学计算来按照0:70%,1:30%的概率生成0和1的随机数。这个函数会返回一个0到1之间(包括0但不包括1)的随机浮点数。为了达到你想要的比例,你需要设置一个阈值,如果随机数小于0.7,就返回0,否则返回1。以下是代码示例:
```javascript
function getRandomWithProb(percentage) {
return Math.random() < percentage ? 0 : 1;
}
// 生成0或1,概率为70%和30%
const result = getRandomWithProb(0.7);
console.log(result); // 输出0或1
```
如果你想生成固定次数的随机数并保持比例,可以用循环多次调用上述函数:
```javascript
function generateNumbers(count, probability) {
let numbers = [];
for (let i = 0; i < count; i++) {
numbers.push(getRandomWithProb(probability));
}
return numbers;
}
// 生成10个随机数,其中70%为0,30%为1
const randomArray = generateNumbers(10, 0.7);
console.log(randomArray);
```
相关问题
生成一个0或者1的随机数
在大多数编程语言中,可以使用内置的随机数生成函数来生成0或1之间的随机整数。这里是一些示例:
1. **Python**:
```python
import random
random_number = random.choice([0, 1])
```
这里使用了random模块的choice()函数,它从给定的序列(这里是[0, 1])中随机选择一个元素。
2. **JavaScript**:
```javascript
let random_number = Math.random() < 0.5 ? 0 : 1;
```
这里利用Math.random()函数生成介于0到1之间的一个小数,然后通过比较判断是否小于0.5,如果是,则返回0,否则返回1。
3. **Java**:
```java
Random rand = new Random();
int random_number = rand.nextInt(2);
```
使用Random类的nextInt(2)方法,指定范围是从0(包括)到1(不包括),因此结果就是0或1。
4. **C#**:
```csharp
Random random = new Random();
int random_number = random.Next(2);
```
类似于Java,使用Random类的Next(2)方法。
每个例子都会生成一个0或1的概率分布均匀的随机数。如果你想得到一个固定的0或1,可以直接赋值,例如直接写 `int random_number = 0;` 或者 `random_number = 1;`。
js生成不重复的随机数
有很多方法可以生成不重复的随机数,其中一个常用的方法是使用Fisher–Yates shuffle算法,具体步骤如下:
1. 创建一个包含所有可能的随机数的数组。
2. 从数组中随机选择一个数,并把它与数组中最后一个数交换位置。
3. 从数组中剩下的数中再随机选一个数,并把它与倒数第二个数交换位置。
4. 重复上述步骤,直到只剩下一个元素。
这样生成的随机数序列是不重复的,而且每一个随机数的出现概率相等。在JS中可以这样实现:
```
function shuffle(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
const arr = Array.from({length: 100}, (_, i) => i + 1); // 生成一个包含所有可能的随机数的数组
shuffle(arr); // 打乱数组
console.log(arr); // 打印出不重复的随机数序列
```
阅读全文