有listbox1和listbox2两个控件,随机取listbox1内容加到listbox2中,同时删除listbox1中的相应内容,randomize;
    i:=random(listbox1.items.count-1);
   ……
    listbox2.Items.add(listbox1.items[listbox1.itemindex]) ;
   ……
为什么listbox1中的最后一组数据总是取不到(除非将listbox1内容全部取到listbox2中),就是剩菜2行也随机不到它? 

解决方案 »

  1.   

     i:=random(listbox1.items.count+1);
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
      if listbox1.items.count<1 then exit;
      i:=random(listbox1.items.count);
      listbox2.Items.add(listbox1.items[i]);
      listbox1.Items.Delete(i);
    end;
      

  3.   

    random(n)不是随机0~n之间的整数么。。
      

  4.   

    如果:
    var x,n: integer;
    x := random(n);
    则:
     0 <= x < n 
    delphi的帮助里是这样描述的:Description
    In Delphi code, Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range
    0 <= X < 1.
      

  5.   

    感谢各位,问题解决了,也原来也以为是0<=x<=n呢。