作者 主题: 关于求随机数得整数问题  (阅读 4383 次)

Homway

  • Newbie
  • *
  • 帖子: 12
关于求随机数得整数问题
« 于: 十二月 11, 2011, 12:06:11 上午 »
程序代码
color White_C = color(255, 255, 255),
      Black_C = color(0, 0, 0);
final int Side = 60, // Side of cell
          Rank = 5;  //Number of cells across = number of cells down
final int W = Side * Rank, // Width of canvas
          H = W; // Height of canvas
int[][] Vals = new int[Rank][Rank];//To hold cell values
PFont Font; // Font for rendering cell values

void setup() {
  int i,
      j,
      k;
  size(W, H);
  Font = loadFont("Arial-BoldMT-36.vlw");
  textFont(Font);
  for (i = 0; i < Rank; i++) {
    for (j = 0; j < Rank; j++) {
      for (k = 0; k < Rank*Rank; k++) {
    int r = int(random(Lo,Hi));
    Vals[i][j] = char(r);

     Draw_Vals();
    }
   }
  }
}

final int Hi = 4, // Max cell value
          Lo = -2;// Min cell value
   
void Draw_Vals() {
  int i,
      j;
  int R;
  for(i = 0; i < Rank; i++) {
    for(j = 0; j < Rank; j++) {
      fill(White_C);
      rect(i * Side,j * Side, Side, Side);
      fill(Black_C);     
      textAlign(CENTER, CENTER);
      text(Vals[i][j], (i + 0.5) * Side,
                       (j + 0.5) * Side);
    }
  }
}
   

 int r = int(random(Lo,Hi));
我已经用了int(),但是得出的结果还是有不为整数的,请问该怎么修改?

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 关于求随机数得整数问题
« 回复 #1 于: 十二月 11, 2011, 10:57:45 上午 »
@hongweilala

float 转int 不能用int() 强转。而可以用floor(), round() 和ceil() ,三者的区别请自行查阅reference。
« 最后编辑时间: 十二月 13, 2011, 08:50:12 上午 作者 RavenKwok »

vinjn

  • SuperManager
  • Hero Member
  • *****
  • 帖子: 586
Re: 关于求随机数得整数问题
« 回复 #2 于: 十二月 11, 2011, 07:01:37 下午 »
float转int当然可以用int()来做
问题不在这个
问题在于
程序代码
        Vals[i][j] = char(r);

不妨一试
程序代码
int a = char(-2);
println(a);

Homway

  • Newbie
  • *
  • 帖子: 12
Re: 关于求随机数得整数问题
« 回复 #3 于: 十二月 12, 2011, 04:34:24 下午 »
float转int当然可以用int()来做
问题不在这个
问题在于
程序代码
        Vals[i][j] = char(r);

不妨一试
程序代码
int a = char(-2);
println(a);
修改之後結果變成全部為0,這是什麽情況呢?~

vinjn

  • SuperManager
  • Hero Member
  • *****
  • 帖子: 586
Re: 关于求随机数得整数问题
« 回复 #4 于: 十二月 12, 2011, 04:40:05 下午 »
我没表达清楚
你的问题在于不应该使用char(r);
而应该写成是
程序代码
Vals[i][j] = r;

Homway

  • Newbie
  • *
  • 帖子: 12
Re: 关于求随机数得整数问题
« 回复 #5 于: 十二月 12, 2011, 07:56:43 下午 »
我没表达清楚
你的问题在于不应该使用char(r);
而应该写成是
程序代码
Vals[i][j] = r;

好的,谢谢

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: 关于求随机数得整数问题
« 回复 #6 于: 十二月 13, 2011, 08:51:58 上午 »
 :-[

Tags: