Skip to content

红包算法线段分割法是不是会出现负数? #16

@hzmming

Description

@hzmming

https://github.com/bjweimengshu/ProgrammerXiaohui/blob/master/src/chapter6/part5/Redpackage.java#L45

int segment =  random.nextInt(totalAmount-2) + 1; // 当 segment = 1
int delta = random.nextInt(1)==0 ? 1 : -1; // 当 delta = -1
while(segments.contains(segment) || segment == 0){ // 当 segments已经有一个 1 了
    segment = (segment+delta)%totalAmount; 
    // 第一次进来,(1-1)%totalAmount = 0
    // 第二次进来,(0-1)%totalAmount = -1
    // 跳出循环
}

这不就出现负数了吗?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions