当前位置:  编程技术>移动开发
本页文章导读:
    ▪JAVA的Random种        JAVA的Random类 今天看《JAVA编程思想》的时候看到一个例子,是要写一个程序模拟扔硬币的,就想起Random类了,可是好久不用这个类,居然忘记具体用法了,狂汗之余找到了这个类的一些讲.........
    ▪ tableview不能滚动到下部的行        tableview不能滚动到下面的行 转自:http://www.buildapp.net/iphone/show.asp?id=17491比如说我的tableview按照高度只能显示8行,但是我的内容有15行,那么那些没有显示的行滚动不出来有也是一闪而过又回.........
    ▪ Activity性命周期图       Activity生命周期图 <!-- [if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} </style> <![.........

[1]JAVA的Random种
    来源: 互联网  发布时间: 2014-02-18
JAVA的Random类
今天看《JAVA编程思想》的时候看到一个例子,是要写一个程序模拟扔硬币的,就想起Random类了,可是好久不用这个类,居然忘记具体用法了,狂汗之余找到了这个类的一些讲义,看了看,终于是淡定下来了。呵呵。

顺便把扔硬币的程序也贴上去吧:

package homework;

import java.util.Random;

public class ThrowCoin {

/**
* @param args
*/
public static void main(String[] args) {
   Random coin=new Random();
   /*Random类中实现的随机算法是伪随机,也就是有规则的随机。
   在进行随机时,随机算法的起源数字称为种子数(seed),在种子数
   的基础上进行一定的变换,从而产生需要的随机数字。*/
   boolean x=coin.nextBoolean();
 
   if(x){
  
    System.out.println("正面");
  
   }else{
  
    System.out.println("反面");
  
   }
}
}
//(完)

Random类 (java.util)        

Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

下面介绍一下Random类的使用,以及如何生成指定区间的随机数组以及实现程序中要求的几率。

1、Random对象的生成

         Random类包含两个构造方法,下面依次进行介绍:

         a、public Random()

该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。

         b、public Random(long seed)

该构造方法可以通过制定一个种子数进行创建。

示例代码:

Random r = new Random();

Random r1 = new Random(10);

再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关。

2、Random类中的常用方法

Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的。下面对这些方法做一下基本的介绍:

a、public boolean nextBoolean()

该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。

b、public double nextDouble()

该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

c、public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。

如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

d、public int nextInt(int n)

该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。

如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

e、public void setSeed(long seed)

该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。

3、Random类使用示例

使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字。以下生成随机数的代码均使用以下Random对象r进行生成:

Random r = new Random();

a、生成[0,1.0)区间的小数

                   double d1 = r.nextDouble();

直接使用nextDouble方法获得。

b、生成[0,5.0)区间的小数

double d2 = r.nextDouble() * 5;

因为nextDouble方法生成的数字区间是[0,1.0),将该区间扩大5倍即是要求的区间。

同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。

c、生成[1,2.5)区间的小数

       double d3 = r.nextDouble() * 1.5 + 1;

生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。

同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。

d、生成任意整数

int n1 = r.nextInt();

直接使用nextInt方法即可。

e、生成[0,10)区间的整数

int n2 = r.nextInt(10);

n2 = Math.abs(r.nextInt() % 10);

以上两行代码均可生成[0,10)区间的整数。

第一种实现使用Random类中的nextInt(int n)方法直接实现。

第二种实现中,首先调用nextInt()方法生成一个任意的int数字,该数字和10取余以后生成的数字区间为(-10,10),然后再对该区间求绝对值,则得到的区间就是[0,10)了。

同理,生成任意[0,n)区间的随机整数,都可以使用如下代码:

int n2 = r.nextInt(n);

n2 = Math.abs(r.nextInt() % n);

f、生成[0,10]区间的整数

int n3 = r.nextInt(11);

n3 = Math.abs(r.nextInt() % 11);

相对于整数区间,[0,10]区间和[0,11)区间等价,所以即生成[0,11)区间的整数。

g、生成[-3,15)区间的整数

int n4 = r.nextInt(18) - 3;

n4 = Math.abs(r.nextInt() % 18) - 3;

生成非从0开始区间的随机整数,可以参看上面非从0开始的小数区间实现原理的说明。

h、几率实现

按照一定的几率实现程序逻辑也是随机处理可以解决的一个问题。下面以一个简单的示例演示如何使用随机数字实现几率的逻辑。

在前面的方法介绍中,nextInt(int n)方法中生成的数字是均匀的,也就是说该区间内部的每个数字生成的几率是相同的。那么如果生成一个[0,100)区间的随机整数,则每个数字生成的几率应该是相同的,而且由于该区间中总计有100个整数,所以每个数字的几率都是1%。按照这个理论,可以实现程序中的几率问题。

示例:随机生成一个整数,该整数以55%的几率生成1,以40%的几率生成2,以5%的几率生成3。实现的代码如下:

int n5 = r.nextInt(100);

int m; //结果数字

if(n5 < 55){ //55个数字的区间,55%的几率

m = 1;

}else if(n5 < 95){//[55,95),40个数字的区间,40%的几率

m = 2;

}else{

m = 3;

}

因为每个数字的几率都是1%,则任意55个数字的区间的几率就是55%,为了代码方便书写,这里使用[0,55)区间的所有整数,后续的原理一样。

当然,这里的代码可以简化,因为几率都是5%的倍数,所以只要以5%为基础来控制几率即可,下面是简化的代码实现:

         int n6 = r.nextInt(20);

               int m1;

              if(n6 < 11){

                       m1 = 1;

              }else if(n6 < 19){

                       m1= 2;

              }else{

                       m1 = 3;

              }

     在程序内部,几率的逻辑就可以按照上面的说明进行实现。

4、其它问题

a、相同种子数Random对象问题

前面介绍过,相同种子数的Random对象,相同次数生成的随机数字是完全相同的,下面是测试的代码:

                            Random r1 = new Random(10);

                            Random r2 = new Random(10);

                            for(int i = 0;i < 2;i++){

                                      System.out.println(r1.nextInt());

                                     System.out.println(r2.nextInt());

                            }

在该代码中,对象r1和r2使用的种子数都是10,则这两个对象相同次数生成的随机数是完全相同的。

如果想避免出现随机数字相同的情况,则需要注意,无论项目中需要生成多少个随机数字,都只使用一个Random对象即可。

b、关于Math类中的random方法

其实在Math类中也有一个random方法,该random方法的工作是生成一个[0,1.0)区间的随机小数。

通过阅读Math类的源代码可以发现,Math类中的random方法就是直接调用Random类中的nextDouble方法实现的。

只是random方法的调用比较简单,所以很多程序员都习惯使用Math类的random方法来生成随机数字。

    
[2] tableview不能滚动到下部的行
    来源: 互联网  发布时间: 2014-02-18
tableview不能滚动到下面的行
转自:http://www.buildapp.net/iphone/show.asp?id=17491
比如说我的tableview按照高度只能显示8行,但是我的内容有15行,那么那些没有显示的行滚动不出来
有也是一闪而过又回到第一行开始的前8行.

把tableview作为viewcontroller的self.view=tableview就可以
但是使用self.view addsubview:tableview就不能滚动到最下面一行了

contentSize 设置大一点
这样可以么,我试试
本来是慢慢的可以滚动到最下列的,但是待不住,一点击就点到上面的行上去了。
ok,问题解决了
方法就是content size 设置为实际tableview的行数x行高,然后tableview设置高度为mainFrame的高度减去navigationBar的高度.即可


製作一個iPod撥放器

这个是怎么实现的?

各位用破解的2.0 能做调试机器吗?

[Solved]购买iPhone developer program的时间周期?

iphone sdk 的一个bug

有谁可以说一下iphone程序运行的过程

如何使用AddressBook中的ABAddressBookRegisterExternalChangeCallback

关于Interface Builder的问题

请问有没有简单的方法从未破解的iphone上读资料到电脑?

tableview不能滚动到下面的行

关于TabBarController的使用?

请教高手,如何在来电的时候放音乐。

【求助】如何打包!

关于Nate True's dock.app!急!

一语句不明白!

IPHONE网络检测

对图像编辑

求助!

关于文件存储

IPHONE开发入门

iphone2.0 中实现播放 mp3文件

如何让自己编写的程序在iphone上用啊

全局变量被篡改

问housisong:关于上传做数字签名的问题

<font color=blue>SDK 2.1出来了</font>

字符串处理

关于http请求并且读取csv文件

无法理解中。。。。

非官方2.0,流媒体开发, 请教video显示的方法

Xcode平台,Obj-c中有类似C++的System::Xml这样的命名空间或类库吗?

如何隐藏一个UIView或者UIView的派生类?

隐藏UINavigationBar

TextField 的一个问题

detect WiFi

NSString 字符串查找问题 求救

待解决问题总汇,好心人帮帮忙吧。。。。

问个关于tableview的问题

模拟器的BUG?

NSURLConnection and validate certification

<震动>講問iphone sdk 有提供震動的function api嗎?

怎么把数字合成到图片上?

小技巧:ansi多字节编码到uicode的转换参数

请教-(NSArray *)arrayByAddingObject:(id)anObject 方法的用法

横放后imageView显示的图片总是不居中

iPhone程序支持多语言环境問題?

请教,Iphone download video 以及video的保存

<b><font color=red>OpenGL ES程序如何在模拟器中响应横放竖放切换?(试用了下道具~ 哈哈)</font></b>

如何让声音循环播放啊。

问下 tableview中为什么要定义一些cell

关于NSButtonCell

为什么我bulid and go出不来模拟器,必须用run 下的start with Performance Tool才能出来模拟器。

多线程

请教 iPhone软件能不能象Symbian与WM软件一样自己分发?

何单独定义tableview中每个单独cell的高度呢

怎样阻止触摸事件

短信问题 求助

关于iphone游戏部分开发的点点东西(文字显示)

关于使用opengl 文字显示问题

请教如何设透明的view

UIView如何控制addSubview的次序?

请问如何在iphone中播放音频文件

NSTextView 清空的问题

UIView addSubview加入透明的UIView

三轴失灵的问题

快速使用Core Animation 閃爍問題

哪位能分析分析WiFiFoFum的工作原理??

Apple Drops iPhone Non Disclosure Agreement (NDA)

请教大家:CocoaSpeechSynthesisExample能移植到iphone上吗

Hello World事例中的 window 在哪被初始化

求救Iphone Memory問題

搭建iphone 2.0的程序编译平台(绝对可行)

官方例子中的Timer的使用及相关引用计数的疑问

請問Windows下如何進行Iphone開發?

有方法可以知道文件目錄下的文件數量嗎?

什么情况下 iPhone的代码签名无法加载?(代码签名已成功安装在Mac 上)

求助关于解析xml文件地问题??

有没有人遇到真机上NSURLConnection下载中断的问题?

Simulator能否播放声音?

CFHTTPReadStream redirect问题!

关于bundle的使用

問傳值得問題~~

关于UIView的卷页动画效果

请高手指点怎样获取iphone的手机号码,谢谢大家了

在COCOA中怎么实现"进程的互斥"?

哪里有iPhone Push Notification Service?

咨询一个基本的问题,希望得到大家的帮助

initWithFrame与initWithCoder的区别

如何共用寫好的function?

从DTrace谈起

请教如何把例子程序传到真机上运行?

[更新]The iphone Developer's cookbook 1st edition (PDF Version _cnsoft) 加入高速连接.

请问有什么办法可以把纯粹的RGB数据画出来?

UIView縮放大小是左上角, 請問如何放中?

在iphone或者iphone模拟器上如何写日志文件?

iphone下如何在子线程和主线程之间传递数据?付代码

为什么我用CFHTTPMessageXXXXX函数的时候,编译说找不到symbol ?附代码

请教如何在真机上运行iphone程序

请教怎样往strings资源文件中写数据

请教如何取固定随机数

怎么使新拷贝过来的数据库文件可写?

更多iphone开发资料,请访问http://www.buildapp.net/iphone/

    
[3] Activity性命周期图
    来源: 互联网  发布时间: 2014-02-18
Activity生命周期图

<!-- [if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} </style> <![endif]--><!-- [if !ppt]--><!-- [endif]-->

Activity 生命周期aaa

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3