Java:怎样产生1~6的随机数,并使1~4产生的概率大一些呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:怎样产生1~6的随机数,并使1~4产生的概率大一些呢?相关的知识,希望对你有一定的参考价值。
int n = (int)(Math.random()*6+1); 可以产生1~6的随机数,但怎样能使1~4的产生概率大一些呢
用概率模型,先随机一次看取用哪个概率,随后再随机一次。代码示例如下:
import java.util.Random;public class HelloWorld
public static void main(String[] args)
Random random = new Random();
double p1=0.7; //1~4的概率
double p=(((int)random.nextInt(10)%(10)+1)*1.0/10 < p1)?p1:(1-p1); //实际所取概率
int max=(p==p1)?4:6;
int num=(int)random.nextInt(max)%(max)+1;
System.out.print(num);
参考技术A
给提供一个小思路吧,当然你也可以搜索 "随机数 权重"来查看更多资料。
public int getRadomInt()int m = (int)(Math.random()*10+1);
if(m<7)
return (int)(Math.random()*4+1);
else
return (int)(Math.random()*4+1+2);
好久没写Java代码了,不知道对不对。
大体意思就是,先随机 1到10,假定为 概率相同,那么 当出现的数小于等于6,就随机出1到4,那么随机到 1到4 的概率就是 60%。
这样应该能明白了吧。
在C语言中怎样产生随机的字符串
在VC中,怎样产生一个随机的字符串?
有没有什么库函数?
或者用什么思想来实现设计算法?
最好以代码为例哈,
谢谢!
但是可以这么实现:
1.产生固定长度的随机的字符串
主要就是产生固定个数的随机字符,
那么就简单了,用两组随机数:
一组:随机产生0~25的整数num,然后用'a'+num来赋值小写字母,'A'+num来赋值大写字母
一组:随机产生0,1,产生0,用'a'来和num相加,生成小写字母;产生1,用'A'来和num相加,生成大写字母;
2.产生不固定长度的随机的字符串
就是在上面的产生固定长度的随机的字符串的基础上,在引入一组随机数,来控制字符串长度
代码如下:
1.产生固定长度的随机的字符串
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10//固定长度为10
void main()
int flag,charLengt;
int i,j,k=0;
char ch[N+1]=NULL;
srand((unsigned)time(NULL));
for(i=0;i<10;i++)//生成10个String吧
for(j=0;j<N;j++)
flag=rand()%2;
if(flag) ch[k++]='A'+rand()%26;
else ch[k++]='a'+rand()%26;
ch[k]='\0';
k=0;
printf("%s\n",ch);
getch();
不定长的自己参照着写吧 参考技术A //产生长度为length的随机字符串
char* genRandomString(int length)
int flag, i;
char* string;
srand((unsigned) time(NULL ));
if ((string = (char*) myMalloc(length)) == NULL )
myLog("Malloc failed!flag:14\n");
return NULL ;
for (i = 0; i < length - 1; i++)
flag = rand() % 3;
switch (flag)
case 0:
string[i] = 'A' + rand() % 26;
break;
case 1:
string[i] = 'a' + rand() % 26;
break;
case 2:
string[i] = '0' + rand() % 10;
break;
default:
string[i] = 'x';
break;
string[length - 1] = '\0';
return string;
参考技术B #include <stdlib.h>
...
char R[26]='A',....'Z'
char C[100] = 0;
for(int n=0;n<100;n++)
C[n] = R[rand()%26];
参考技术C 能把问题说得具体一点吗?
以上是关于Java:怎样产生1~6的随机数,并使1~4产生的概率大一些呢?的主要内容,如果未能解决你的问题,请参考以下文章